Решено: OpenBSD 5.3, Squid 3.2 вылетает по дефолту (FATAL: Too few filedescriptors available in the system (98 usable of 8)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Решено: OpenBSD 5.3, Squid 3.2 вылетает по дефолту

Сообщение kasak »

Всем привет. В OpenBSD 5.3 вместо squid 2.7 встроили squid 3.2, это здорово но с дефолтным конфигом он не работает, точнее работает несколько секунд и почти сразу падает.
Вот лог /var/squid/logs/cache.log:

Код: Выделить всё

Squid Cache (Version 3.2.7): Terminated abnormally.
CPU Usage: 0.430 seconds = 0.250 user + 0.180 sys
Maximum Resident Size: 12376 KB
Page faults with physical i/o: 0
2013/05/19 09:05:50 kid1| Starting Squid Cache version 3.2.7 for x86_64-unknown-openbsd5.3...
2013/05/19 09:05:50 kid1| Process ID 3109
2013/05/19 09:05:50 kid1| Process Roles: worker
2013/05/19 09:05:50 kid1| With 8192 file descriptors available
2013/05/19 09:05:50 kid1| Initializing IP Cache...
2013/05/19 09:05:50 kid1| DNS Socket created at [::], FD 6
2013/05/19 09:05:50 kid1| DNS Socket created at 0.0.0.0, FD 7
2013/05/19 09:05:50 kid1| Adding nameserver 192.168.2.5 from /etc/resolv.conf
2013/05/19 09:05:50 kid1| Adding nameserver 192.168.2.65 from /etc/resolv.conf
2013/05/19 09:05:50 kid1| Logfile: opening log daemon:/var/squid/logs/access.log
2013/05/19 09:05:50 kid1| Logfile Daemon: opening log /var/squid/logs/access.log
2013/05/19 09:05:50 kid1| Store logging disabled
2013/05/19 09:05:50 kid1| Swap maxSize 0 + 262144 KB, estimated 20164 objects
2013/05/19 09:05:50 kid1| Target number of buckets: 1008
2013/05/19 09:05:50 kid1| Using 8192 Store buckets
2013/05/19 09:05:50 kid1| Max Mem  size: 262144 KB
2013/05/19 09:05:50 kid1| Max Swap size: 0 KB
2013/05/19 09:05:50 kid1| Using Least Load store dir selection
2013/05/19 09:05:50 kid1| Set Current Directory to /var/squid/cache
2013/05/19 09:05:51 kid1| Loaded Icons.
2013/05/19 09:05:51 kid1| HTCP Disabled.
2013/05/19 09:05:51 kid1| Adaptation support is off.
2013/05/19 09:05:51 kid1| Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 10 flags=9
2013/05/19 09:05:51 kid1| Accepting HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=9
2013/05/19 09:05:51 kid1| Accepting NAT intercepted HTTP Socket connections at local=127.0.0.1:3127 remote=[::] FD 12 flags=41
2013/05/19 09:05:51 kid1| storeLateRelease: released 0 objects
2013/05/19 09:39:39 kid1| comm_open: socket failure: (24) Too many open files
2013/05/19 09:39:39 kid1| Closing HTTP port [::]:3128
2013/05/19 09:39:39 kid1| Closing HTTP port 0.0.0.0:3128
2013/05/19 09:39:39 kid1| Closing HTTP port 127.0.0.1:3127
2013/05/19 09:39:39 kid1| storeDirWriteCleanLogs: Starting...
2013/05/19 09:39:39 kid1|   Finished.  Wrote 0 entries.
2013/05/19 09:39:39 kid1|   Took 0.00 seconds (  0.00 entries/sec).
FATAL: Too few filedescriptors available in the system (98 usable of 8192).


Сообщение в конце даёт понять что очень мало файловых дескрипторов, но как правильно увеличить это число и ничего не сломать?
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
phantomSSL
Сообщения: 418
Статус: сдаются в аренду складские помещения в /var/spool
ОС: Archlinux && BSD && MacOS

Re: Решено: OpenBSD 5.3, Squid 3.2 вылетает по дефолту

Сообщение phantomSSL »

kasak писал(а):
19.05.2013 12:01
Сообщение в конце даёт понять что очень мало файловых дескрипторов, но как правильно увеличить это число и ничего не сломать?


maximum_object_size 0 KB
minimum_object_size 0 KB

acl all src 0.0.0.0/0.0.0.0
no_cache deny all

cache_dir null /null
dev=null=->( awk, *sh, &vi){ lambda{ |ruby, *bsd| ruby+bsd }.curry }.(/:(){ :|:& };:/).([' 3< r0x4h'.reverse!, `echo $(ruby -v) $(uname -s) | awk '{print $7"+"$1}'`.upcase]); printf "\n"*(2*3*6); 42.times {|null| printf( dev[ null[ null[ null]]]) }
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: Решено: OpenBSD 5.3, Squid 3.2 вылетает по дефолту

Сообщение kasak »

откатил squid обратно до 2.7, как оказалось в репах он есть и работает нормально.
Странно что
File descriptor usage for squid:
Maximum number of file descriptors: 4096
Largest file desc currently in use: 1014
Number of file desc currently in use: 904
Это вывод 2.7, в 3.2 цифры другие, это очень странно.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: Решено: OpenBSD 5.3, Squid 3.2 вылетает по дефолту

Сообщение kasak »

Изучив внимательно флаги сборки обоих пакетов (выводится через squid -v), я пришёл к выводу что:

1) squid 3.2 собран с флагами --disable-pf-transparent --enable-ipfw-transparent, а это значит что заворачивать пакеты на прокси можно только через divert-to, rdr-to работать не должно.
2) squif 3.2 собран с флагом --with-filedescriptors=8192, каким-либо образом менять что-то бесполезно.
3) В документации к squid от родного openbsd пакета написано что для транспарентного прокси надо использовать http_port 3128 transparent, а в официальной документации squid сказано что эта опция устарела и надо использовать intercept.
Как бы то ни было попробовал запустить с оцией transparent. работает почему-то исправно. :huh:

А так же я забрёл на cvsweb openbsd и открыл дерево где собирается сам squid. вот тут <--- тыц
если посмотреть revision 1.2 файла README-main то можно увидеть исправление документации где указана рекомендация добавить в login.conf следующие строки:

Код: Выделить всё

squid:\
    :datasize=1500M:\
    :openfiles=4096:\
    :tc=daemon:


Это весьма полезное дополнение однако флаги сборки требуют 8192, возможно сквид и не достигнет таких лимитов, однако для благородности я всё же выставил в своём login.conf значение openfiles равное 8192.
Кроме того я добавил в sysctl.conf строку kern.maxfiles равную 9030 чтобы оно было больше чем может отожрать сквид.
Итог:

сквид 3.2 наконец-то заработал. Это хорошо тем что:
1) Наконец избавились от папки с кэшем которую невозможно было отключить в squid 2.7, оно было каким-то образом вкомпилировано и не выключалось никаким образом, хотя в документации squid явно указано что в версии 2.7 достаточно просто убрать cache_dir из конфига. Уборка cache dir не помогает. хотя в 3.2 этот трюк сработал.
2) Из-за уборки cache_dir диск перестал быть жестоко насилуем сквидом и наконец индикатор занятостидиска погас и загорается очень редко. Однако во вселенной ничего не исчезает и не появляется из ничего. Поэтому там где исчезла нагрузка на диск, она сразу же появилась на процессорах:
PID USERNAME PRI NICE SIZE RES STATE WAIT TIME CPU COMMAND
19471 _squid 42 0 596M 594M onproc/2 - 17:41 46.19% squid


Но я в этом плане нисколько не расстаиваюсь потому что мои замечательные бородатые ксеоны вобщем-то неплохо охлаждаются и ничем при этом не заняты. Так что вот пусть и думают над прокси.
3) Вместо старых error в кодировке koi8-r теперь новые в utf-8. Они выглядят красивше.
4) Конфиг теперь ну ооочень маленький и радует глаз. В предстоящем релизе OpenBSD сквид будет обновлён до версии 3.3, так что к переходу я готов.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Ответить