Блокировки сессий в веб-проектах — выбираем эффективное оружие
2013-05-16 11:53:27
Всем привет!
В последнее время, в связи с бурным ростом и усложнением фронт-эндов, ...
+ развернуть текст сохранённая копия
Всем привет!
В последнее время, в связи с бурным ростом и усложнением фронт-эндов, аяксами и т.п. — все чаще проявляется проблема блокировки сессий во время эксплуатации сайтов на PHP. PHP по умолчанию создает для сессии файл и процесс эксклюзивно его блокирует. Остальные процессы, пытающиеся открыть сессию (аяксы, табы в браузере) — выстраиваются в очередь. Не всегда логика приложения, особенно если она сложная, позволяет эффективно ограничить время блокировки конкурирующих за сессию процессов.
Ситуация усугубляется еще тем, что 3-5 подобных клиентов способны быстро забить зависшими и простаивающими в ожидании процессами PHP-воркеры и сайту становится плохо, если не сказать очень.
К сожалению, разработчики/сисадмины не всегда могут сразу понять, что дело в блокировке сессии — и ищут проблемы в других частях проекта, теряя время.
В статье расскажу какие инструменты позволяют быстро диагностировать проблему, приведу работающий код и дам несколько боевых рекомендаций по выживанию :-)
Читать дальше →
Тэги:
1с-битрикс,
apache,
php,
php-fpm,
web-разработка,
администрирование,
блог,
веб-разработка,
компания,
системный
[recovery mode] Гормональный holywar Админа и Разраба PHP или REMOTE_ADDR vs HTTP_X_FORWARDED_FOR
2013-04-18 10:47:39
Давеча был свидетелем одного интересного спора о том как же действительно нужно определять IP адрес ...
+ развернуть текст сохранённая копия
Давеча был свидетелем одного интересного спора о том как же действительно нужно определять IP адрес конечного пользователя из скриптов PHP.
Собственно, каждое слово сабжа отображает действительную ситуацию. Это был религиозный спор, обострённый весенней замечательной погодой, в котором, я считаю, не оказалось правых и не правых, но который побудил меня к мини-исследованию и, к моему счастью, поставил точку в понимании этого конфессионального но по факту очень простого вопроса.
Для тех, кто как и я сомневался был уверен, что во всём разобрался, но боялся спросить лень было разбираться в мелочах — под кат.
Пропитано дзеном
Тэги:
fpm,
nginx,
php,
proxy,
tcp,
настройка,
программирование,
сервер,
хостинг
Количество процессов php-fpm и память
2012-04-20 22:28:19
В некоторых статьях читал, мол, устанавливай максимальное число процессов fpm %много%, 24, например, ...
+ развернуть текст сохранённая копия
В некоторых статьях читал, мол, устанавливай максимальное число процессов fpm %много%, 24, например, 10 и т.п. При этом, авторы этих статей совсем не берут в расчёт то, что каждый процесс будет занимать ровно столько памяти, сколько прописано в memory_limit в настройках php. И даже эти 10 процессов могут легко занять всю память какого-нибудь маленького сервера. [...]
Тэги:
php,
php-fpm,
блокнот
Конфигурации nginx для php-fpm
2012-04-07 12:46:43
Установить php-fpm ещё недостаточно. Нужно ещё настроить сервер, чтобы он мог работать с php-fpm. ...
+ развернуть текст сохранённая копия
Установить php-fpm ещё недостаточно. Нужно ещё настроить сервер, чтобы он мог работать с php-fpm. Рассмотрим nginx. Для начала самая простая конфигурация, способная заставить работать любой скрипт на php. (У меня, кстати, на таком конфиге работает phpbb3 ) server { server_name example.com www.example.com; #домен сайта с www и без. listen 127.0.0.1; #тут должен быть айпи адрес [...]
Тэги:
nginx,
php-fpm
Static и dynamic pool в php-fpm
2012-04-07 12:09:12
Статик — это определённое число процессов, которые занимают фиксированный объём памяти. И ...
+ развернуть текст сохранённая копия
Статик — это определённое число процессов, которые занимают фиксированный объём памяти. И ненужные процессы не завершаются, а просто простаивают, ожидая своей очереди. С динамик всё по-другому: запускается минимальное указанное количество процессов, в процессе работы это число растёт до pm.max_children и, когда лишние процессы становятся не нужными, они завершаются, и остаётся число процессов pm.max_spare_servers. Получается, если [...]
Тэги:
php,
php-fpm