Каждому сервису - крейсерный ход Денис Колисниченко Хакер, номер #093, стр. 093-114-1 (dhsilabs@mail.ru, dkws.org.ua) Руководство по оптимизации работы сетевых сервисов Сегодня мы поговорим об оптимизации работы различных сетевых программ. Практически каждый сетевой сервис имеет свои директивы управления производительностью. Значения по умолчанию рассчитаны на всех - и на домашний компьютер, на котором тот или иной сервис используется только эксперимента ради, и на сервер большого предприятия, доступ к которому получают сотни пользователей одновременно. Совершенно очевидно, что данные значения не могут быть оптимальными именно для твоего случая. В этой статье мы поговорим, как выжать максимум производительности из Apache, ProFTPD, Samba и OpenSSH. [реактивный FTP-трансфер] Из всех доступных реализаций FTP-серверов я остановил свой выбор на ProFTPD. Если ты отдаешь предпочтение wu-ftpd, pure-ftpd или vsftpd, не волнуйся, их настройка будет аналогична. Открываем файл конфигурации, в данном случае /etc/proftpd.conf. Первое, что бросается в глаза - это директива ServerType. Она может принимать значения standalone или inetd. По умолчанию используется первое значение, означающее, что сервер будет работать автономно, а не через xinetd. Если по какой-то причине в твоем конфиге установлено значение inetd, без промедления замени его на standalone. В автономном режиме производительность FTP-сервера заметно выше, поскольку он постоянно загружен в память и ожидает подключения. В режиме inetd FTP-сервер вызывается суперсервером xinetd по мере поступления запроса. Ясно, что во втором случае для обработки запроса требуется больше времени. Не кажется ли тебе, что авторизация на сервере занимает слишком много времени? Этот процесс можно существенно ускорить, отключив директивы IdentLookup и UseReverseDNS: IdentLookups off UseReverseDNS off Первая директива подразумевает использование протокола ident для идентификации клиента. Поскольку данный протокол все равно уже не используется, IdentLookups можно выключить с чистой совестью. Вторая директива позволяет определять доменные имена подключившихся клиентов по их IP-адресам. Поскольку разрешение имен занимает время, то лучше его отключить - так авторизация на сервере будет проходить намного быстрее. С этим разобрались, идем дальше: * MaxClients число[сообщение] - задает максимальное число одновременно работающих клиентов. Сколько клиентов может одновременно выдержать твой сервер, зависит не только от самого сервера, но и от пропускной способности канала. Чем "шире" канал, тем с большим числом клиентов может справиться сервер. * MaxClientsPerHost число[сообщение] - максимальное число клиентов от одного узла. Если ограничение будет превышено, пользователь увидит сообщение, заданное необязательным параметром [сообщение]. Значение зависит от каждого конкретного случая. Рекомендую разрешить доступ трем клиентам от одного узла. * MaxClientsPerUser число[сообщение] - максимальное число клиентов от одного пользователя. Можно указать значение "1". * MaxConnectionRate соединений/секунду - позволяет указать количество соединений в секунду. Данный параметр сильно зависит от ширины канала, поэтому конкретное значение порекомендовать не могу. Если установить "1", то за одну секунду с сервером можно будет установить только одно соединение. |