Я запускаю Squid 2.7 на 64-битной Ubuntu 10.04. У меня была проблема с Squid, у которой заканчивались файловые дескрипторы, и в /var/log/squid/cache.log отображалась следующая ошибка:
ПРЕДУПРЕЖДЕНИЕ! В вашем кеше заканчиваются дескрипторы файлов
Я проверил:
менеджер squidclient: информация | grep 'описание файла'
и он показал, что у меня доступно только 1024 файловых дескриптора.
Я изменил /etc/security/limits.conf, добавив это в конце:
* soft nofile 32768
* hard nofile 32768
proxy soft nofile 32768
proxy hard nofile 32768
Добавил это в /etc/squid/squid.conf:
max_filedescriptors 32768
Также изменен / etc / default / squid:
SQUID_MAXFD=32768
Ничего не получалось. В конце концов я отредактировал /etc/init.d/squid, добавив "ulimit -n 32768":
#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.
set -e
ulimit -n 32768
<... snipped ...>
Это сработало! :)
Мне пришлось делать все это из-за того, что живой производственный сервер Squid был невероятно медленным, поэтому я уверен, что это НЕ правильный способ сделать это.
Но как это сделать правильно?
Вам нужно добавить строку ulimit в скрипт инициализации squid, а также увеличить дескрипторы max_file в squid.conf. Это два важных шага. Вам больше не нужно компилировать squid из исходного кода, чтобы увеличить этот предел. Это было то, что вам нужно было сделать с действительно старыми версиями Squid.
/etc/init.d/squid - это символическая ссылка на / lib / init / upstart-job, поэтому ваше первоначальное предложение увеличивает ulimit для всех служб выскочки.
Я согласен с тем, что исходный вопрос / решение увеличивает ограничение на дескриптор файла, поэтому спасибо за это. В идеале решение, которое не поднимало бы дескрипторы файлов по всем направлениям, было бы лучше.
Раньше у меня была такая же проблема. Мне не удалось увеличить количество файловых дескрипторов квида.
В дополнение к тому, что вы сделали, я настроил squid, используя следующие параметры настройки:
./configure --prefix=/usr/local/squid --enable-start-stop-daemon --with-filedescriptors=65536 --enable-storeio=ufs,aufs --with-aufs-threads=10
Важная часть кейса:
--with-filedescriptors=65536
После этого и перезапуска squid я получил максимальное значение файловых дескрипторов: 65536.
Конечно, для этого требуется установка squid из исходников, а не из команды:
apt-get install squid