Назад | Перейти на главную страницу

У Squid заканчиваются файловые дескрипторы в Ubuntu

Я запускаю 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