Страница 1 из 2

проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-10 0:32:56
Alex Keda
имеем - хостинг, DirectAdmin
руками, из портов, врезано - апач 2 и php5 (вместо 1.3 и 4.4 соответственно)
всё работало хорошо, пока сегодня, предположительно, число юзеров не достигло 64. (в системе 68, кроме системных - минус пара-тройка технических - не юзающих php-cgi - как раз 64 и будет.)
после чего апач стал выпадать в кору:

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

Segmentation fault (core dumped)
В логах оставлял единственную запись:

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

[Wed Oct 10 01:10:19 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/local/sbin/suexec)
при удалении последнего юзера из конфига пача (конфиги юзеров инклюдятся в основной - на каждого юзера по инклюду получается), всё взлетало нормально, с такими логами:

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

[Wed Oct 10 01:21:27 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/local/sbin/suexec)
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:27 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/local/sbin/suexec)
[Wed Oct 10 01:21:28 2007] [notice] FastCGI: process manager initialized (pid 18500)
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Wed Oct 10 01:21:28 2007] [warn] FastCGI: (dynamic) server "/usr/local/directadmin/data/users/realme/php-bin/php" (uid 1016, gid 1016) started (pid 18515)
[Wed Oct 10 01:21:28 2007] [notice] Apache configured -- resuming normal operations
НУ, про апач могу ещё добавить:

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

server# /usr/local/sbin/httpd -V
Server version: Apache/2.0.61
Server built:   Oct 10 2007 00:58:03
Server's Module Magic Number: 20020903:12
Server loaded:  APR 0.9.16, APR-UTIL 0.9.15
Compiled using: APR 0.9.16, APR-UTIL 0.9.15
Architecture:   32-bit
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
 -D AP_TYPES_CONFIG_FILE="etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache2/httpd.conf"
server#                                    
а в остальном - аналогично этой статье - http://www.lissyara.su/?id=1360
=================
есть идеи?
Чую, что где-то сидит ограничение в 64 юзера, но вот где...
по конфигам всё прорыл - нигде такого нет.
в ядре тоже ничё близко не стит...

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-10 0:34:21
Alex Keda
P.S. версия апача последняя - обновлял сегодня, уже после возникновения ошибки - думал мож баг, и уже пофиксили.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-10 12:07:55
Alex Keda
без идей?

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-11 15:28:43
manefesto
это баг.
Как вариант

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

 man apache | grep 64

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-11 16:25:46
Alex Keda
manefesto писал(а):это баг.
Как вариант

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

 man apache | grep 64
да сам так думаю.
вчера, перебирал модули.
выяснил, что на 64 юзерах работает не со всеми модулями. с некоторыми не работает вообще, с некотоырми - в некоторых комбинаиях.
причём модули -родные.
я уже не говрю про fastcgi - c ним ни в какой комбинации не пашет.
=========
ночью буду до 2.2 обновлятть, если не выйдет - придётся на 1.3. откатываться и конфиги директ админа править в плане шаблонов :(((
короче - третья бессонная ночь...

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-11 19:30:26
Alex Keda
обновление до 2.2 непомогло...
пересобираю рекурсивно, ещё раз....
нехочется на 1.3. - много менять надо, да и чё-то я уже сомневаюсь.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-11 20:52:30
Alex Keda
поднял.
чё сделал - сам не понял.
ночью буду делать diff старого с новым конфигом и построчно добавлять опции.
надеюсь найти баг...

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-11 20:56:08
Alex Keda
ЗЫ - есть мнение что это не юзеров лимит а витуалхостов...
я штук 10 неправильно заданных удалил....

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 0:08:46
Alex Keda
итак, нашёл те самые строки, котороые клали сервере.
всё оказалось прозаичнее и сложней одновременно.

это логи:

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

#        CustomLog /var/log/httpd/domains/5-ya.ru.bytes bytes
#        CustomLog /var/log/httpd/domains/5-ya.ru.log combined
#        ErrorLog /var/log/httpd/domains/5-ya.ru.error.log
достаточно закомментить любую строку в любом виртуалхосте/главном конфиге - падает совсем редко.
закомментишь две вроде перестаёт вообще.
т.е. - лимит на число открытых файлов чтоли - получается?

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

server# sysctl -a | grep files
kern.maxfiles: 24000
kern.maxfilesperproc: 21600
kern.openfiles: 9776
p1003_1b.mapped_files: 1
server#   
вот так.
пока, прошёлся по паре крупных юзеров, закомментил седом в кофигах аккесс-логи - штук 150 получислось, думаю, на ближайщее время хватит, но всё же хочется найти корень проблемы

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 15:41:17
manefesto
А ядро тебе не ругалось о превышении количества открытых файлов то ? maxusers может увеличить ?

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 15:43:02
manefesto
http://host-ing.ru/help/apache/misc/descriptors.html

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

 For example, the hard limit may be 1024, but the soft limit only 64.
Лис, ты гуглом тоже не пользуешся ?

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 15:53:26
Alex Keda

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

server# more /etc/make.conf| grep FD_SETSIZE
FD_SETSIZE=8192
server#   
однако, наводит на размышления, что

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

server# more /etc/make.conf | grep FD_SETSIZE
server# sysctl -a | grep files
kern.maxfiles: 24000
kern.maxfilesperproc: 21600
kern.openfiles: 8852
p1003_1b.mapped_files: 1
server#  
там конечно ещё почта и прочия, но всё же...
до вчера было 4 тыщщи...
====================
кстати, я прям аж со стула слез, сервер который настраиваю называется hos-ting.ru :)
а теперь посмотри на домен линка :) дефис в другом положении :)

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 16:23:30
Fastman
У меня такая заметка валяетсо :
File Handle/Resource Limits:
When using a large number of Virtual Hosts, Apache may run out of available file descriptors if each Virtual Host specifies different log files. The total number of file descriptors used by Apache is one for each distinct error log file, one for every other log file directive, plus 10-20 for internal use. Unix operating systems limit the number of file descriptors that may be used by a process; the limit is typically 64, and may usually be increased up to a large hard-limit.
Although Apache attempts to increase the limit as required, this may not work if:

Your system does not provide the setrlimit() system call.
The setrlimit(RLIMIT_NOFILE) call does not function on your system (such as Solaris 2.3)
The number of file descriptors required exceeds the hard limit.
Your system imposes other limits on file descriptors, such as a limit on stdio streams only using file descriptors below 256. (Solaris 2)
In the event of problems you can:
Reduce the number of log files; don't specify log files in the VirtualHost sections, but only log to the main log files.
If you system falls into 1 or 2 (above), then increase the file descriptor limit before starting Apache, using a script like
#!/bin/sh
ulimit -S -n 100
exec httpd
The have been reports that Apache may start running out of resources allocated for the root process. This will exhibit itself as errors in the error log like "unable to fork". There are two ways you can bump this up:
Have a csh script wrapper around httpd which sets the "rlimit" to some large number, like 512.
Edit http_main.c to add calls to setrlimit() from main(), along the lines of
struct rlimit rlp;

rlp.rlim_cur = rlp.rlim_max = 512;
if (setrlimit(RLIMIT_NPROC, &rlp)) {
fprintf(stderr, "setrlimit(RLIMIT_NPROC) failed.\n");
exit(1);
}

(thanks to "Aaron Gifford <agifford@InfoWest.COM>" for the patch)
The latter will probably manifest itself in a later version of Apache.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 17:52:18
Alex Keda
ща попробуем.
похоже на это, но лимиты у меня очень большие.
значительно больше описанных...
правда, и виртуалхочтов, сотня наверно...
ща посчитаю

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 17:54:57
Alex Keda

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

server# find . -name httpd.conf -exec grep "</VirtualHost>" {} \;| wc -l
     465
server# 
неожидал...
солидненько...
тока на логи полторы штуки дескрипторов.
=======
пошёл апач перебирать с FD_SETSIZE=24000

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 18:07:36
Fastman
Угу... потом расскажешь.
Если у меня валялось это, значит кому то нужно было... сам не сталкивался.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 18:25:03
Alex Keda

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

server# grep FD /etc/make.conf
FD_SETSIZE=65536
server#   
вроде помогло.
но - помоему перебор :)
=======
это щас - раскомментил всё что раньше комментил в виртуалхочтах

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

server# sysctl -a | grep files
kern.maxfiles: 24000
kern.maxfilesperproc: 21600
kern.openfiles: 9018
p1003_1b.mapped_files: 1
server#    

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-12 20:27:24
Fastman
Ну вот виш какие засады бывают на ровном месте :)

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-13 11:49:07
kmb
Круто =)))
ФастМан, а у вас больше никаких заметок нет? :))) Выложили бы все на будущее =))

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-13 12:36:09
Fastman
kmb писал(а): Круто =)))
ФастМан, а у вас больше никаких заметок нет? :))) Выложили бы все на будущее =))
Ну как бы у меня нет директории с названием: "Решение траблов на все случаи жизни." :D
Плюс я не такой мегамонстр как Лис :) Я вообщем то даже не сисадмин :)

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-22 3:55:25
Alex Keda
бля... как я хочу спать...
===========

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

serv# grep FD_SETSIZE /usr/include/sys/select.h
 * FD_SETSIZE may be defined by the user, but the default here should
#ifndef FD_SETSIZE
#define FD_SETSIZE      32768U
        __fd_mask       __fds_bits[_howmany(FD_SETSIZE, _NFDBITS)];
        _n = _howmany(FD_SETSIZE, _NFDBITS);            \
serv#   
вот собственно то, что накладывает ограничения на апача.
по дефолту было 1024U
параметры выставляемые через make.conf не могут перепрыгнуть планку установленную в этом файле, могут быть лишь ниже её.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-22 11:53:20
Fastman
Во зараза....
Слуш.. ну я думаю разработчики тоже не бамбук курят, как увеличение этого параметра скажется на загрузке сервака ???
Потянет ли столько файловых дескрипторов нагруженный сервак с обычным SATA-веником без засад ?

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2007-10-22 13:12:19
Alex Keda
со свистом тянет.
==========
пока зенд отключен :)
как зенд включаю - кладётся файловая система...
вечером буду разбираться.

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2008-03-10 19:32:12
Alex Keda
понадобилось мир пересобрать - еле нашёл эту тему - уже забыл где что менять.
=========
про зенд - полная пересборка всего софта помогла. чё-то где-то криво было...

Re: проблема с апачем - ограничение в 64 юзера?

Добавлено: 2008-03-10 22:21:23
ProFTP
апача в корку уходил когда его с оптимизацией -02 собрал... но это не в тему наверное...