@20strannik08

Зависает opencart, с чего начать поиск проблемы?

Здравствуйте! На vps стоит ocstore 2.3.0.2.4. Все работало само по себе годами.
С недавнего времени, стал подвисать, как при оформлении заказов, так и при смене статусов заказов в админке. Подвисания хаотичные, то есть то нет. Отключал поочередно модули доставки, это не решило проблему. В момент подвисаний нагрузка на процессор vps нулевая. Такое ощущение как будто какойто запрос сам сайт делает исходящий что ли...хз. Логи ошибок что опенкарта что сервера, ничего по делу не говорят... Уже ума не приложу куда копать...Пните в нужном направлении плз(

Сервер, ubuntu, nginx,php-fpm(7.3), mariadb(движок aria, бд маленькая 76мб).
Кол-во товаров в магазине менее 400.
В самом опенкарта дофига всякого установлено конечно(все купленное), но из того что может иметь отношение к корзине и заказам в админке это пожалуй только доставки: СДЕК, Боксберри, ПочтаРФ и трекинг Liveinform. Все это поочередно и одновременно отключал, не решило проблему...
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
точно не помогу, но рекомендую изучить вот это словосочетание
APM newrelic ( ну и аналоги)
вообще попробуй, может его php клиента будет достаточно без изменений кода...

второй варик - чистый инсталл отдельно и последующее добавление модулей

ну и третий
На vps

откуда знать что его не перепродали куче новых и они жрут все ресурсы?
Ответ написан
@Asokr
Проверьте запросы к базе данных, например при помощи модификатора:
spoiler

<?xml version="1.0" encoding="utf-8"?>
<modification>
	<name>SQL Query Time Log</name>
    <version>0.2</version>
    <code>SQL Query Time Log</code>
    <author>Otvet</author>
	
	<file path="system/library/db.php">
		<operation>
			<search><![CDATA[
			return $this->db->query($sql);
			]]></search>
			<add position="replace"><![CDATA[			
		$min_time = 10;//МИНИМАЛЬНОЕ ВРЕМЯ ИСПОЛНЕНИЯ ЗАПРОСА В МС, ЗАПИСЫВАЕМОЕ В ЛОГ
        $file = debug_backtrace();
        $name = (!isset($file[0]['file'])) ? 'N/A' : $file[0]['file'];
        $start = (time() + microtime());
        $query_out = $this->db->query($sql);
        $end = (time() + microtime());
        $sql_time = round($end - $start, 5)*1000;
        if ($sql_time > $min_time) {
        file_put_contents(DIR_LOGS.'sql_time.log', ("\nСтраница:".$_SERVER['REQUEST_URI']."\nИсточник:" . $name . "\nВремя выполнения: " . $sql_time . "мс \n\n" . $sql . "\n\n----------------------\n"), FILE_APPEND); }
        return $query_out;
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[
			return $this->adaptor->query($sql, $params);
			]]></search>
			<add position="replace"><![CDATA[			
		$min_time = 10;//МИНИМАЛЬНОЕ ВРЕМЯ ИСПОЛНЕНИЯ ЗАПРОСА В МС, ЗАПИСЫВАЕМОЕ В ЛОГ
        $file = debug_backtrace();
        $name = (!isset($file[0]['file'])) ? 'N/A' : $file[0]['file'];
        $start = (time() + microtime());
        $query_out = $this->adaptor->query($sql, $params);
        $end = (time() + microtime());
        $sql_time = round($end - $start, 5)*1000;
        if ($sql_time > $min_time) {
        file_put_contents(DIR_LOGS.'sql_time.log', ("\nСтраница:".$_SERVER['REQUEST_URI']."\nИсточник:" . $name . "\nВремя выполнения: " . $sql_time . "мс \n\n" . $sql . "\n\n----------------------\n"), FILE_APPEND); }
        return $query_out;
			]]></add>
		</operation>
	</file>
</modification>



На странице оформления посмотрите в консоли разработчика, во вкладке сеть, может не все скрипты доставки убираются со страницы при отключении модуля (может там модификтор используется для добавления скриптов, и при отключении модуля, он все равно их вставляет на страницу)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы