Вопрос по php, fastcgi, apache, debian, session – session_start кажется очень медленным (но только иногда)

25

По какой-то странной причине только сегодня наш сервер решил быть очень медленным во время запуска сеансов. Для каждого сеанса session_start сервер либо отключается через 30 секунд, либо ему требуется около 20 секунд для запуска сеанса. Это очень странно, поскольку он не делал этого в течение очень долгого времени (последний раз наш сервер делал это около 7 месяцев назад). Я попытался вместо этого изменить сеанс, чтобы он выполнялся через базу данных, и это прекрасно работает, однако, поскольку наш текущий веб-сайт создан, потребовались дни, чтобы перейти на каждую страницу и изменить загрузку сеансов, чтобы включить новый сеанс. обработчик. Поэтому мой вопрос остается:

Почему это так медленно, и почему только иногда?

Мы работаем на выделенном сервере Хетцнера с 24 ГБ оперативной памяти и процессором, достаточно быстрым, чтобы просто запустить простой веб-сервер (я полагаю, что Xeon, но я не уверен). Мы запускаем debian на сервере с настройкой apache + fastcgi + php5.

Сервер не сообщает о большой нагрузке ни через состояние сервера, ни черезtop команда.Vnstat не сообщает о каких-либо проблемах с нашим сетевым соединением (опять же, это не приведет к медленной локальной обработке сеанса).IOtop не сообщает о проблемах с процессами, занимающими весь жесткий диск. Запись в папку tmp, в которой находятся файлы сеанса, работает быстро, если это делается через vim.

Опять же, чтобы прояснить это, моя главная проблема здесь не в том, должны ли мы переключаться на БД или на кешированную в памяти версию сессий, а просто спрашиваю, почему это происходит, потому что все, на что я смотрю кажется, работает нормально, за исключением самого PHP.

EDIT: The maximum file in our PHP tmp directory is 2.9 MB, so nothing that should make an impact, I believe.

UPDATEЯ никогда не понимал, что было не так и / или как это исправить, но проблема исчезла после того, как мы переключились на сессии memcached / db.

Возможно, что-то не так с диском или файловой системой? Jon
"для перехода на каждую страницу требуется несколько дней и изменение загрузки сессий для включения нового обработчика сессий"; Если это так, вы должны серьезно рассмотреть вопрос об исправлении этого факта в первую очередь. PeeHaa
Были ли какие-либо изменения, которые, по вашему мнению, в последнее время приводят к такому поведению? Можете ли вы взглянуть на последнюю часть файлов журнала вчера и посмотреть, не было ли зарегистрировано что-то, указывающее на проблему? happybuddha
Загляни в свойtmp каталог. PHP хранит там свои сессии. Смотрите, если что-то не так. Tom Hallam
RepWhoringPeeHaa @ Как я уже говорил, я определенно это сделаю. Я был перемещен в систему со своей работой, поэтому, к сожалению, я не создал управление сеансом, которое было у приложения. Это также не было чем-то, что нам было необходимо исправить, поскольку, как уже упоминалось, проблем не было более 7 месяцев. h2ooooooo

Ваш Ответ

6   ответов
0

Я знаю, что это старый вопрос, но я только что исправил эту проблему на своем сервере. Все, что я сделал, это включил обходной кеш для доменов в менеджере кеша в cpanel.

Мои сессии начинались и закрывались годами, теперь они мгновенные.

15

Ты пыталсяsession_write_close(); ? This will disable write-ability in session variables but you can still read data from them. And later when you need to write a session variable, reopen it.

Я также страдал от этой проблемы, но эта вещь работала как шарм. Вот что я делаю:

session_start(); //starts the session
$_SESSION['user']="Me";
session_write_close();   // close write capability
echo $_SESSION['user']; // you can still access it
Спасибо. Я по крайней мере думаю, что это работает сейчас. Гораздо быстрее и пока нет полного замедления :)
5

внезапно серверу потребовалось 30 секунд, чтобы выполнить запрос. Я заметил, что это было из-заsession_start(), Первый запрос был быстрым, но каждый следующий требовал30 sec быть выполненным. Я обнаружил, что файл сеанса в c: \ wamp \ tmp был заблокирован первым запросом примерно на 30 секунд. В течение этого времени второй запрос ожидал разблокировки файла. Я узнал, что это как-то связано сrewrite_mod а также.htaccess, Я отключил rewrite_mod и закомментировал каждую строку в .htaccess, и он снова работает как шарм. Я не знаю, почему это произошло, потому что я не помню, чтобы менялись какие-либо настройки или настройки на wamp.

Я полностью согласился с этим решением ... но почему я не знаю.
2

Проблема с функцией session_start () (работает медленно)

Сеансы блокируются PHP во время выполнения одного сценария, поэтому, если сценарии объединены в одном сеансе, они могут вызвать эти удивительно длинные задержки.

Я хотел бы, чтобы это просто было исправлено, но это просто странно, как это случилось с КАЖДЫМ пользователем на сайте (включая доступ из нашего офиса на разных компьютерах), если это просто заблокированный файл сеанса. Может быть, это потому, что мы использовали текстовые файлы, и поэтому он использовалsame файл, который был заблокирован? h2ooooooo
0

/etc/php.d/memcached.ini

0

Когда запуск сеанса используется для возобновления существующего сеанса (например, с помощью идентификатора cookie), может быть, большой файл сеанса (сеанс с большим количеством содержимого внутри) может быть медленным для запуска?

Если это так, то, вероятно, ваше приложение помещает много данных в сессии.

Самый большой файл в нашей папке tmp - 2.9MB, так что ничегоshould оказать влияние. h2ooooooo

Похожие вопросы