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

PHP 5.4.6: error "дофега открытых файлов"..

Добавлено: 2012-11-04 12:55:18
dekloper
перестал отдаваться контент, в логах апача такой ерор:
Sun Nov 04 13:17:40 2012] [error] PHP Fatal error: require_once(): Failed opening required '/usr/local/www/чото_там.php' (include_path='.:/usr/local/share/pear') in /usr/local/www/чото_там.php on line 12
[Sun Nov 04 13:24:40 2012] [crit] [client 192.168.121.4] (23)Too many open files in system: /.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

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

root@ws53:/root # php -v
PHP 5.4.6 (cli) (built: Aug 24 2012 15:55:10)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
как можно потюнить пшп иль апач?

Re: PHP 5.4.6: error "дофега открытых файлов"..

Добавлено: 2012-11-04 13:25:55
FreeBSP

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

> sysctl -a | grep fil
kern.maxfiles: 7816
kern.bootfile: /boot/kernel/kernel
kern.maxfilesperproc: 7034
kern.openfiles: 241
kern.corefile: %N.core
...
> sysctl -d kern.maxfiles kern.maxfilesperproc kern.openfiles
kern.maxfiles: Maximum number of files
kern.maxfilesperproc: Maximum files allowed open per process
kern.openfiles: System-wide number of open files
не?

Re: PHP 5.4.6: error "дофега открытых файлов"..

Добавлено: 2012-11-04 14:40:41
dekloper
а какие цифры лучше туда воткнуть?
уменя так

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

root@ws53:/root # sysctl -a | grep fil
kern.maxfiles: 12328
kern.bootfile: /boot/kernel/kernel
kern.maxfilesperproc: 11095
kern.openfiles: 514
были подозрения на заббикс (он у меня на том же хосте вертелся)
када я ево притушил, ошибок какоето время не наблюдалось
а вот шас опять.. и без заббикса таже фигня..

Re: PHP 5.4.6: error "дофега открытых файлов"..

Добавлено: 2012-11-04 15:28:44
FreeBSP
php как mpm работает? по идее можно попробовать уменьшить время жизни воркеров, они будут умирать и освобождать файлы
в портах есть утилитка lsof
ну и для диагностики воткни в крон скрипт типа

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

 echo -n `date` >> logfile;
echo -n `sysctl kern.openfiles` >> logfile; 
echo `lsof -p <httpd> >> logfile`
и посмотри что будет в логе перед падением
еще в портах есть утилитка lsof
потом, можно поправить sysctl - прмерно maxfiles где нить до 32к, maxfilesperproc=30к

Re: PHP 5.4.6: error "дофега открытых файлов"..

Добавлено: 2012-11-05 16:35:36
Alex Keda
ну это точно не php виноват.
поищщите по форуму - была похожая тема - я создавал там и решение было...
года три назад.
чё-то из этой оперы:

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

--- /tmp/select.h.orig  2010-05-13 16:37:45.000000000 +0400                                                                                                                                                                      
+++ /usr/src/sys/sys/select.h   2010-05-13 16:38:03.000000000 +0400
@@ -56,7 +56,7 @@
  * be enough for most uses.
  */
 #ifndef        FD_SETSIZE
-#define        FD_SETSIZE      1024U
+#define        FD_SETSIZE      32768U
 #endif
 
 #define        _NFDBITS        (sizeof(__fd_mask) * 8) /* bits per mask */
в 9.1 или даже 9.0 это уже поправили, там какое-то адекватное число по дефолту стало...