Ошибки у некоторых пользователей при входе на сайт.
Глянул в логи сервера
[Thu Jun 15 19:54:57 2017] [error] [client 95.81.197.***] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/***/data/www/***.ru/system/core/database.php on line 0
[Thu Jun 15 19:55:44 2017] [error] [client 95.81.197.***] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/***/data/www/***.ru/system/core/database.php on line 0
[Thu Jun 15 19:56:35 2017] [error] [client 95.81.197.***] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/***/data/www/***.ru/system/core/database.php on line 0
[Thu Jun 15 19:58:10 2017] [error] [client 95.81.197.***] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/***/data/www/***.ru/system/core/database.php on line 212
Поднял старый сайт на поддомене на том же сервере — он доступен у всех.
Посмотрел, что в /system/core/database.php в 212-ой строке:
$trace = debug_backtrace();
В нулевой строке, само собой, ничего нет
Сервер перегружал, не помогает.
Что это такое может быть?
сравните с новым.
ну конечно если у вас на старом сервере max_execution_time больше то всё равно это плохо, нужно разбиратся почему так долго скрипты выполняются.
Сервер один. Я переезжал с Instantcms1.9 на Instantcms2.7.2
Старый (я не стал удалять старый сайт, похоже, что не зря) и новый сайты в соседних папках в каталоге www на одном сервере.
Старый работал и работает без проблем. По поводу нового пользователи завалили сообщениями об ошибках.
Вот теперь пишут, что периодически вылетает надпись "Ошибка создания комментария".
В логах по поводу комментариев ошибок нет.
Зато ошибками про system/core/database.php on line 0 лог забит под завязку.
eoleg,
Сервер один. Я переезжал с Instantcms1.9 на Instantcms2.7.2
Старый (я не стал удалять старый сайт, похоже, что не зря) и новый сайты в соседних папках в каталоге www на одном сервере.
Старый работал и работает без проблем. По поводу нового пользователи завалили сообщениями об ошибках.
Вот теперь пишут, что периодически вылетает надпись "Ошибка создания комментария".
В логах по поводу комментариев ошибок нет.
Зато ошибками про system/core/database.php on line 0 лог забит под завязку.
базу данных нужно было новую создавать и было бы тебе счастье…
Гениально! Кто-то сегодня по телевизору отвечал похожими ответами.базу данных нужно было новую создавать и было бы тебе счастье...
акая версия php стоит?
2.7.2
Версия PHP
5.3.3
Лимит памяти
256 Мб
Макс. размер загрузки
20 Мб
Но как только я перетащил всё на 2.7.2 — начались нюансы. Я поотключал все нгинксы и прочее и оставил голый апач 2.2.2
Причем старый сайт, вынесенный на поддомен работает нормально. И новый почти у всех нормально работает, но некоторые пользователи не могут войти, им выдает ошибку Maximum execution time of 30 seconds exceeded.
Сам я такую ошибку тоже один раз видел с мобильника, пока возвращался с работы. Дома через вайфай опять стало все нормально и больше не повторялось.
Пробовал отключать memcached и кэширование вообще, все равно некоторые люди войти не могут.
Вот phpinfo:
instantcms.ru/users/files/download6576.html
То и дело (раз в день стабильно) не могу зайти на сайт. И еще кто-то не может судя по логам сервера:
Проблема проявляется если попытаться зайти с компьютера, где хоть раз была при авторизации поставлена галка "запомнить меня".
Настройки сервера… поменял версию mySql, php менял дважды, пробовал менять режим работы php (модуль apache, CGI, голый nginx) — ничего не помогает.
Знакомым написал чтобы чистили куки, периодически очищаю таблицу cms_users_auth_tokens (многие пользователи считают, что сайт давно умер, так как не могут войти).
Лечится данная проблема довольно просто. Очистка кукисов. Либо очистить куки браузера, либо очистить куки в настройках браузера, либо зайти с другого браузера, где не ставилась галка запомнить.
После захода в неавторизованном виде и ввода логина/пароля все некоторое время нормально работает.
Юзеры жалуются, что не могут зайти на сайт.
Пример логов при моей сегодняшней попытке зайти на сайт:
[Thu Sep 14 19:29:28 2017] [error] [client 109.252.**.**] Script timed out before returning headers: php
[Thu Sep 14 19:29:58 2017] [warn] [client 109.252.**.**] Timeout waiting for output from CGI script /var/www/php-bin-isp-php71/***/php
[Thu Sep 14 19:29:58 2017] [error] [client 109.252.**.**] Script timed out before returning headers: php
[Thu Sep 14 19:30:08 2017] [warn] [client 109.252.**.**] Timeout waiting for output from CGI script /var/www/php-bin-isp-php71/***/php
[Thu Sep 14 19:30:08 2017] [error] [client 109.252.**.**] Script timed out before returning headers: php
2017/09/14 19:30:17 [error] 23619#23619: *356833 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 109.252.**.**, server: *****.ru, request: "GET /admin HTTP/1.1", upstream: "127.0.0.1:8080/admin", host: "*****.ru"
[Thu Sep 14 19:30:17 2017] [warn] [client 109.252.**.**] Timeout waiting for output from CGI script /var/www/php-bin-isp-php71/***/php
[Thu Sep 14 19:30:17 2017] [error] [client 109.252.**.**] Script timed out before returning headers: php
Похоже, что проблема в огромном количестве комментариев (около миллиона), но почему проявляется только при авторизации по кукису — непонятно.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Пока писал пришла мысль уменьшить memory_limit до 128М на локальном сервере.
Вот результат первой загрузки сайта:
Fatal error: Maximum execution time of 180 seconds exceeded in D:\OSPanel\domains\BACK280.tes\system\core\database.php on line 232.
Какое-то подтверждение теории есть или пальцем в небо? — попробуйте настроить логирование медленных запросов и посмотреть что будет в логах — описание.Похоже, что проблема в огромном количестве комментариев (около миллиона), но почему проявляется только при авторизации по кукису — непонятно.
Можно посмотреть размер таблиц cms_users_auth_tokens и cms_users — при авторизации по токену запрос к ним идет, а с комментами сложно связать это…
Похоже, что проблема в огромном количестве комментариев (около миллиона), но почему проявляется только при авторизации по кукису — непонятно.
Ris, еще вариант. Может и правда комменты… Отключите в админке событие user_login для компонента Комментарии
Ну можно в phpmyadmin посмотреть время выполнения запросов в таблицах и если гдето тормоза то попробовать может индексы добавить или как то оптимизировать Серверные переменные и настройкиМожно посмотреть размер таблиц cms_users_auth_tokens и cms_users
Пальцем в небо на самом деле. Просто в остальных таблицах строк не так много, максимум 130000.Какое-то подтверждение теории есть или пальцем в небо? — попробуйте настроить логирование медленных запросов и посмотреть что будет в логах
Логирование медленных запросов настраивать пробовал. Эта штука как-то странно работает. Даже если ставить long_query_time=20 оно все равно сыплет в лог все подряд. А сайт-то принципе довольно шустро работает. Если не учитывать зависание с авторизацией по кукису, то самый долгий запрос при заходе в профиль пользователя:
/system/controllers/comments/model.php => 260 => modelComments->getCommentsCount() SELECT COUNT( i.id ) AS COUNT FROM cms_comments i WHERE (i.user_id = '40') AND (i.is_deleted IS NULL) Время выполнения 1.48362 секунд
А вот это мысль очень интересная! Потому что заметил, что зависание при входе наблюдается в случаях долгого отсутствия на сайте, но достаточно зайти с другого компа, где не запомнены кукисы (даже с другого айпи) — сразу нормально входит и на том компе, где зависало.Отключите в админке событие user_login для компонента Комментарии
А в хуках user_login в компонентах комментарии и форум (от Loadыря) написано:
// Если новых комментариев на отслеживаемых страницах не появлялось // то тоже выходим $counts = $this->model->getTrackedNewCounts($user['id'], $user['date_log']); // новые сообщения на форуме $counts = $this->model->getNewThreadsCounts($user['id'], $user['date_log']);
Теперь дождусь зависания, зайду в phpmyadmin и попробую поотключать эти два хука по очереди. О
О результатах эксперимента отпишусь.
А потому что у вас один запрос вешает весь сервак и все остальные за ним тоже получаются "медленными") Там же выводится время выполнения.Эта штука как-то странно работает. Даже если ставить long_query_time=20 оно все равно сыплет в лог все подряд.
Да, я посмотрел это… Там при авторизации вызывается хук для комментов, вот и связка с вашим предположением. Скорее всего так и есть. Но это вызывается всегда, не только при авторизации по хукам. При простой авторизации по логину-паролю тоже этот хук вызывается.А в хуках user_login в компонентах комментарии и форум (от Loadыря) написано:
Теперь дождусь зависания, зайду в phpmyadmin и попробую поотключать эти два хука по очереди.
А зачем в phpmyadmin? — это же можно делать из админки. Компоненты->Управление событиями и там отфильтруйте по колонке Компонент->Комментарии. Или просто сразу по названию хука user_login
Для чистоты эксперимента.А зачем в phpmyadmin? — это же можно делать из админки.
Ведь если зайти под своим логином (все равно откуда) — сайт сразу развешивается.
================================================================
А вот и момент истины!
Возвращаюсь с обеда и не могу зайти на сайт. В режиме инкогнито (ну то есть без авторизации) сайт доступен.
Захожу в phpmyadmin, в таблице cms_events отключаю user_login в комментариях — сайт не загружается. Отключаю user_login в admin — сайт не загружается. Отключаю user_login в forum — бинго, мгновенная загрузка!
Пойду писать Loadырю привет…
И вам приветПойду писать Loadырю привет...