Created attachment 4721 [details] вывод команды strace ahttpd Версии alterator alterator-sslkey-0.2.2-alt1 alterator-notes-1.1-alt9 alterator-net-wifi-0.12-alt1 alterator-wizardface-2.0-alt2 alterator-updates-0.2-alt1 alterator-net-functions-1.1-alt1 alterator-bacula-0.7-alt11 alterator-hw-functions-0.7-alt3 rpm-macros-alterator-4.19-alt1 alterator-l10n-2.9-alt18 branding-altlinux-backup-server-alterator-6.0.0-alt3 alterator-lookout-2.3-alt1 alterator-root-1.1-alt2 alterator-sh-functions-0.13-alt2 alterator-fbi-5.26-alt4 alterator-openldap-functions-0.2-alt2 alterator-datetime-2.2-alt3 alterator-grub-0.5-alt4 alterator-browser-qt-2.15.1-alt1 alterator-services-1.9-alt1 alterator-kdc-0.2-alt7 alterator-auth-0.21-alt1 alterator-net-iptables-4.17-alt1 alterator-distro-backup-server-0.5-alt1 alterator-4.19-alt1 alterator-logs-0.8-alt3 alterator-control-2.2-alt1 alterator-net-eth-4.11-alt2 Открытые файлы увеличиваютя при работе с ahttpd. Из них большинство открывается socket. /var/run/alteratord/.socket Когда достигается предел примерно 1200 файлов, подключиться к веб-интерфейсу невозможно, либо выходит ошибка "Too many open files"
Created attachment 4722 [details] вывод lsof | grep ahttpd
Слав, не знаешь, отчего там такое может вылазить?
Кто-то что-то не закрывает? Вообще, я бы сперва sem@ спросил, он в vhttp/ahttpd должен лучше понимать... Ну и сам покопаться могу, наверное.
(В ответ на комментарий №3) > Кто-то что-то не закрывает? Я так поняла тут создаются при обращении к вебке unix_domain_socket. В них процессы обмениваются, записываются ли как в файл данные, и эти сокеты не закрываются по какой-то причине, множатся до тех пор пока ahttpd не упадет
(В ответ на комментарий №3) > Кто-то что-то не закрывает? > > Вообще, я бы сперва sem@ спросил, он в vhttp/ahttpd должен лучше понимать... Ну > и сам покопаться могу, наверное. Я гляну, но вряд ли раньше чем через неделю-две. Но если у тебя есть время/желание разобраться, то вряд ли кто-то будет против ;). Только надо точно знать как это воспроизвести, потому что я такой проблемы что-то не помню.
Да я вот код разглядывал, но даже пока не очень разобрался, кто что запускает и открывает. Я еще погляжу, но не думаю, что моего времени/желания надолго хватат... Насчет воспроизвести - у меня с этим все хорошо, при каждом обращении к бакенду один открытый сокет, действительно, добавляется...
Created attachment 4723 [details] исправление
Добавил патч, исправляющий ошибку. Проблема оказалась в ahttpd не как в сервере, а как в клиенте alteratord :) Соединение открыли и не закрыли в vhttpd/lib/http_client.c:request_server(). Кто будет собирать исправление?
Еще, насчет патча. Я не уверен, что красиво закрывать канал именно в request_server(). Создается он все-таки выше, в request_inet_server/request_unix_server. Впрочем, request_server() никуда не экспортируется и мое решение мне кажется довольно понятным...
Comment on attachment 4723 [details] исправление Спасибо! Если никто, ну я -- зарядил test-only task #35906.
(В ответ на комментарий №9) > Еще, насчет патча. Я не уверен, что красиво закрывать канал именно в > request_server(). Создается он все-таки выше, в > request_inet_server/request_unix_server. > Впрочем, request_server() никуда не экспортируется и мое решение мне кажется > довольно понятным... И все-таки я бы действительно лучше делал destroy_channel() в request_*_server(). Не люблю, когда выделение и освобождение ресурсов происходит на разном уровне. К тому же, сдается мне, что будь там сразу временная переменная channel_t, то этой ошибки вообще могло не быть, сразу было бы видно, что ресурс надо освободить.
Спасибо! Протестировала. Работает. Наверное, надо отправить в сизиф.
vhttpd-0.7.1-alt1 -> sisyphus: * Tue Dec 21 2010 Michael Shigorin <mike@altlinux> 0.7.1-alt1 - applied connection close patch by slazav@ (closes: #24795) - tiny spec cleanup
М-да, с сонных глаз промахнулся и на второй круг запустил не task #35880, а этот самый task #35906. 2 sem: извиняюсь, вовсе не собирался обгонять-подрезать :(
(В ответ на комментарий №14) > 2 sem: извиняюсь, вовсе не собирался обгонять-подрезать :( Да не, нормально :). Главное патч от slazav багу фиксит, косметикой можно заняться неспеша потом, когда время будет.