Intarr Опубликовано 14 февраля, 2018 Жалоба Поделиться Опубликовано 14 февраля, 2018 (изменено) Недавно достался мне сервер с CMS Simpla на борту, а так же небезызвестной cPanel :/ Кто его админил и дорабатывал - тёмный лес-сломай ногу. Связи с этими людьми нет от слова совсем.Глубокими знаниями в области данной CMS не обладаю да и PHP, туда же. В итоге столкнулся со следующей проблемой - раз в несколько часов некий процесс(иногда их два) PHP выносят 8 ядерный CPU в 100% от чего виснут nginx+apache2 наглушняк. Поочередно от них получаем ошибку 503 мол сервис недоступен. На практике такое как правило бывает когда отваливается БД или бэкэнд. Естественно я полез в error_log и вот что нашёл: PHP Warning: MySQL server has gone away in /home/SITENAME/public_html/api/Database.php on line 150 PHP Warning: MySQL server has gone away [SELECT b.id, b.url, b.name, b.annotation, b.text, b.meta_title, b.meta_keywords, b.meta_description, b.visible, b.date FROM s_blog b WHERE 1 AND b.visible = 1 ORDER BY date DESC, id DESC LIMIT 0, 5 ] in /home/SITENAME/public_html/api/Database.php on line 105 и сразу после: PHP Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "simpla/design/html/subscribes.tpl" on line 25 "{subscribes|var_dump}" unknown tag "subscribes"' in /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:431 Stack trace: #0 /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(253): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "su...', 25) #1 /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2328): Smarty_Internal_TemplateCompilerBase->compileTag('subscribes', Array) #2 /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2812): Smarty_Internal_Templateparser->yy_r38() #3 /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2912): Smarty_Internal_Templateparser->yy_reduce(38) #4 /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php(51): Smarty_ in /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 431 PHP Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "simpla/design/html/subscribes.tpl" on line 25 "{subscribes|var_dump}" unknown tag "subscribes"' in /home/SITENAME/public_html/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:431 т.е. отвалилась БД.Пошёл смотреть файлы config/config.php накопал пользователя БД и проверил его PRIVILEGES - всё огонь, логинимся, права есть. (ещё бы иначе CMS вобще не работала бы). файлик Database.php on line 105 выдал вот такой вот блок кода: Собственно line 105 это там где triger_error, ну ок думаю не смог подключиться к БД, но почему? public function results($field = null) { $results = array(); if(!$this->res_id) { trigger_error(mysql_error($this->link), E_USER_WARNING); return false; } if($this->num_rows() == 0) return array(); while($row = mysql_fetch_object($this->res_id)) { if(!empty($field) && isset($row->$field)) array_push($results, $row->$field); else array_push($results, $row); } return $results; } Пошёл смотреть конфиг my.cnf но увы и ах лога для обычных запросов и ошибок там включено не было, а были только slow queries абракадабра вот такая: Time: 180101 19:03:31 # User@Host: USERNAME[USERNAME] @ localhost [] # Query_time: 13.524118 Lock_time: 0.023002 Rows_sent: 127065 Rows_examined: 575712 SET timestamp=1514833411; SELECT v.id, v.product_id , v.price, v.stock_price, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, '100') as stock, (v.stock IS NULL) as infinity, v.name, v.attachment, v.position FROM s_variants AS v WHERE 1 AND v.product_id in('30558','30559','27008','88264','101996','101998','101999','102000','102001','102002','102003','101995','51634','51941','51940','101989','101990','101991','101988','56944','569 45','56946','56947','56948','56949','56950','56951','56952','56953','56954','113637','113638','113639','113640','113641','113642','113643','113644','113645','113646','11318','11319','11320','11321','11322','11323','11324','11325','11326 ','11327','11328','11330','11331','11332','11333','11334','11335','11339','67153','101993','101997','110452','110469','110415','110423','110421','110441','110431','110435','110463','110449','110433','110418','110465','110430','110443',' 110417','110414','110424','110478','110439','110479','110450','110460','110445','110473','110462','110447','110477','110454','110455','110468','110470','110472','110419','110422','110420','110440','110442','110461','110428','110416','11 0429','110453','110457','110464','110466','110459','110451','110458','110434','110471','110438','110426','110474','110437','110476','110446','110427','110448','110425','110475','110436','110444','110456','110467','110432','83886','92284 ','124670','124671','124672','101341','92283','92282','92281','92287','92285','92286','124673','124669','123484','123606','123607','123608','123609','92280','92279','85544','105752','105762','111220','111222','111225','111226','111227', '111228','111229','111230','111231','113805','113806','113807','115409','115410','115411','115412','115413','115414','115415','115416' и далее бесчисленное количество этих самых ID я так понимаю что это выгрузка товаров куда-то.но во всяких там crontab от любого пользователя(root, adm, ftp, www-data, etc) я там ничего подобного не нашёл. Прошу опытных гуру что нибудь по этому поводу сказать и вобще куда копать, если нужны логи или что-то ещё - предоставлю. Заранее спасибо. Изменено 14 февраля, 2018 пользователем Intarr Цитата Ссылка на сообщение Поделиться на другие сайты
simpla24 Опубликовано 14 февраля, 2018 Жалоба Поделиться Опубликовано 14 февраля, 2018 (изменено) Судя по названию шаблона в админке, это рассылка (subscribes). Такого в оригинальном движке нет, значит дорабатывали. Видимо там идет выборка товаров и вариантов для чего либо, так сложно сказать. Медленный запрос возможен по тому, что нет проверки по id и выборка идет без какого либо лимита, такое бывает, если нет условий. Учитывая то, что виснет периодически - все таки отрабатывает крон, если нет заданий в панели (они и не обязательны, т.к. запуск можно сделать по ссылке ресурсами из вне: cron online и т.д), то поищите в корне или папка файл, который теоретически может запускать рассылку. Изменено 14 февраля, 2018 пользователем fancy-studio Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 14 февраля, 2018 Жалоба Поделиться Опубликовано 14 февраля, 2018 (изменено) Найдите {subscribes|var_dump} в шаблонах и удалите, это нужно для дебага, + криворукие кодеры забыли указать $ то бишь {$subscribes|var_dump} ну или на крайняк {$subscribes|print_r}. Вообще чтобы разобраться во всех проблемах хорошо бы на код взглянуть, а то так гадать можно долго что у вас там накодили. Изменено 14 февраля, 2018 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
Karabaska Опубликовано 14 февраля, 2018 Жалоба Поделиться Опубликовано 14 февраля, 2018 Медленный запрос, похоже, идет из api/Variants.php.Если не найдете источник ошибки простыми способами, то можно попробовать ставить в api/Variants.php свою запись в лог, чтобы видеть полный стек вызовов php. Цитата Ссылка на сообщение Поделиться на другие сайты
Intarr Опубликовано 20 февраля, 2018 Автор Жалоба Поделиться Опубликовано 20 февраля, 2018 Всем большое спасибо за ответы.Проблема оказалась в том что это были действительно большие запросы к БД, по кнопке показать все товары (несколько тысяч), а дисковая система сервера с БД даже не SAS, а просто SATA без рейда. Пока решили убрать показ всех товаров - отваливаться перестало. Ваши ответы помогли мне найти ещё кучу того что надо было бы поправить. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.