Apache 2.2.23 / ulimit -n 1024 / warn-phpd mmap cache

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
ikenni
Сообщения: 4
Зарегистрирован:
24 окт 2012, 07:09

Apache 2.2.23 / ulimit -n 1024 / warn-phpd mmap cache

ikenni » 24 окт 2012, 20:53

Open server 4.7.0
Windows 7
Apache 2.2.23
php 5.2.17
MySQL 5.1.65

В логах после каждого запроса куча ошибок следующего содержания:
[warn-phpd] mmap cache can't open %filepath%
%filepath% - закешированные php-скрипты, автоматически создаваемые php фреймворком Nette.

Решение загуглилось быстро, да только под Unix-системы. Ищется решение под Windows 7 для начала... Цитирую инструкцию для linux:
В логах повсеместно появилась ошибка
[warn-phpd] mmap cache can`t open /var/www/user/ … …/index.php — Too many open files (Pid xxxx)
Решаем так:
смотрим сколько у нас лимит файлов: ulimit -a
Ищем строку:
open files (-n) 1024
меняем лимит:
ulimit -n 2048
Рестартим апач. Все работает.
Аватара пользователя
Максим
Сообщения: 5383
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 25 окт 2012, 00:40

Не думаю что дело в PHP или Apache. Cкорее всего дело в Windows - по умолчанию там доступно максимум 16535 или около того открытых файлов. В интернете я нагуглил решение, попробуйте такие изменения в реестре (если параметра нет, то создать):

HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management.
Параметр IoPageLockLimit (REG_DWORD) = 65536 (Decimal) /10000 (Hex)

HKLM\System\CurentControlSet\Servises\lanmanserver\parameters.
Параметр Size (Dword) = 3

HKLM\System\CurentControlSet\Control\Session Manager\Memory Menegment
Параметр LargeSystemCache (Dword) = 1

Потом перезагрузка компьютера.
ikenni
Сообщения: 4
Зарегистрирован:
24 окт 2012, 07:09

ikenni » 25 окт 2012, 01:05

Произвел все указанные изменения в реестре. Не помогло, почти. Теперь в логи сыпит
[warn-phpd] mmap cache can't open D:\os\domains\test.kz\tmp\cache\_Nette.Configurator\_-68f.php (pid 384 th 3540)
* Сократил путь к файлу и название закешированного файла лишь для удобночитаемости.

------------------------

Примечание:
Разработка ведется на Mac OS X. Там использую MAMP PRO. С ним проблем нету, неоптимизированный код отдается за =< 60мс. На Open Server его что-то тормозит, обработка от 300мс и до 2000мс...

Open Server использую из коробки, ini-файлы не изменены. И да, с самого начала грешу на Windows...
Аватара пользователя
Максим
Сообщения: 5383
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 25 окт 2012, 01:52

ikenni писал(а):И да, с самого начала грешу на Windows...
А еще в интернете советуют переходить на Windows Server. Других вариантов решить проблему я к сожалению не нагуглил.
ikenni
Сообщения: 4
Зарегистрирован:
24 окт 2012, 07:09

ikenni » 25 окт 2012, 02:14

Ситуация такова, что использование отдельного компьютера затратно для клиента. Я продолжу поиски решения, если что-то откопаю - сразу же об этом сообщу )

Чуть позже, попробую запустить Nette Framework на Windows XP, Vista, 8, FreeBSD и Ubuntu...
Пробовал запустить сайт на denwer'е, ошибок вроде бы не сыпит (по крайней мере логи пустые), но также медленно работает, даже порой медленеее ))

Спасибо за поддержку )
vitidev
Сообщения: 1
Зарегистрирован:
24 апр 2013, 13:34

vitidev » 24 апр 2013, 13:39

Максим писал(а):Не думаю что дело в PHP или Apache. Cкорее всего дело в Windows
Похоже все таки дело в PHP, вернее в ее windows реализации.
У меня такая же ерунда с Nette. Отключение open_basedir мигом решило проблему скорости и мусора в логах. Включил обратно - снова стало тормозить, хотя такие вот строки больше в лог не попадают.
Ответить