Почему выполнение php скрипта блокирует весь сервер?
Есть сайт, на опенкарте если интересно, сервер LiteSpeed, не локальный
Для простого тестирование делаем банальный скрипт
<?php
sleep(60);
?>
Пока не пройдет минута весь сайт не отвечает! Подскажите пожалуйста с связано?
drunken_ikarus, да это понятно, надо понимать какие php-файлики запускаются в 1 случае и во 2ом. Может у вас там сессия активно используется и сайт ждет доступа к ней, много возможностей все поломать.
drunken_ikarus, проверьте сначала открытие сессии, если ваш опенкарт до "банального скрипта" открыл сессию и не закрыл ее, то все кто используют сессию, будут ждать ее освобождения.
Vitsliputsli, ну похоже что дело действительно не в сессии.
возможно, кто-то очень сильнопряморукий настраивал веб-сервер и зада ему ровно 1 воркер и 1 тред.
Виталий Артемьев, гениально, почему-то не подумал так проверить, спасибо.
FanatPHP, были такие мысли, но такие варианты оставляешь на последок, и умудрится ведь надо чтобы такое сотворить, и проверять/чинить удаленно проблематично.
drunken_ikarus, Виталий уже диагностировал вашу проблему выше, у вас открывается сессия и не закрывается. Пока она открыта, все остальные скрипты пытающиеся к ней обратиться будут ждать ее высвобождения.
Поэтому вам нужно решать вопрос с ней, если уж используете сессию, то открывайте, читайте/пишите и сразу закрывайте. Или если в реальности ваши скрипты отрабатывают не по 20 секунд, и нет требования высокой скорости, то можно забить.
Есть набор параметров - количество то ли одновременных соединений, то ли воркеров ... то ли дочерних процессов. Надо смотреть в первую очередь в конфиг php-fpm, а в крайнем случае в сам php и nginx (если такая связка)
Очевидно дело в блокировке сессий
Читайте https://rmcreative.ru/blog/post/blokirovanie-sessi...
Так как вы зажаты в рамках CMS, то самый простой способ решения проблемы будет переход со стандартного файлового обработчика сессий на другой:
- mysql
- memcached, но надо выставить memcached.sess_locking=Off
- redis