Периодически форум долго генерирует страницы сайта

Автор Солярис, 22 января 2018, 18:24:05

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Солярис

Здравствуйте!

Возникла проблема. Форум не постоянно, но регулярно генерирует страницы по несколько секунд.

То есть одну и ту же страница форум может сгенерировать за сотые доли секунды, а может вплоть до 9 секунд.

В сформированных xhprof отчетах можно наблюдать, что самое больше по времени занимает выполнение функции mysql_query.

Разумеется, хостинг тут же все переводит на не оптимизированную работу самого сайта с базой данных. А их серверы типа работают как надо.

Что можно предпринять, если якобы дело обстоит именно в самом сайте.

Заранее спасибо за помощь.

GeorG

Смотрите какие именно mysql запросы у вас грузят так хостинг, и оптимизируйте их.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис


GeorG

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис

Поясните, плиз, попроще (не для системных администраторов).

S.T.A.L.K.E.R.

Цитата: Солярис от 22 января 2018, 21:14:54Поясните, плиз, попроще (не для системных администраторов).
Mytop - мониторинг процессов MySQL в реальном времени

GeorG

Цитата: Солярис от 22 января 2018, 21:14:54Поясните, плиз, попроще (не для системных администраторов).
Если вам даже это нужно пояснять, то лучше обратитесь за помощью к системному администратору, чтобы ничего не сломать.

Это - SHOW FULL PROCESSLIST; можно в phpmyadmin или командную строку, а что такое mytop, выше уже написали.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис

22 января 2018, 21:44:31 #7 Последнее редактирование: 22 января 2018, 22:03:37 от Солярис
Я полагаю, что Вам многое надо пояснять в юриспруденции, если Вы начнете задавать вопросы по этой области.

И я сомневаюсь, что на этом форуме общаются исключительно профи про администрированию серверов. Здесь полно вопросов от любителей.

+++++++++++++++++

А вот в логах форума полезли ошибки следующего вида:
Код
http://www.сайт.ru/index.php
8192: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
Файл: /адресация на хостинге/Sources/Load.php(198) : runtime-created function
Строка: 3

Что не так с этим файлом?

S.T.A.L.K.E.R.

А Вам хостер версию РНР там случайно не сменил/обновил?Спросите ка у него.

Солярис

Да нет. В настройках хостинга для работы форума установлена версия РНР 5.3

Yworld_garry

А если как написано вам preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

заменить preg_replace на preg_replace_callback...

Да и вообще уже давно пора забыть и нигде не использовать php3

Василич

Цитата: Солярис от 22 января 2018, 21:44:31И я сомневаюсь, что на этом форуме общаются исключительно профи про администрированию серверов. Здесь полно вопросов от любителей.

Полностью согласен ... Снобизм некоторых просто убивает ....

Такое ощущение , что это не открытый форум , а частная посиделка для избранных .... Ну общались бы сами с собой и сравнивали бы у кого , что больше ....

Мое мнение , и не только мое , что именно на СМФ приходят очень много не профессионалов , для которых вотсап к пример не интересен или скучен или мал .... И хочется чего-то большего , но профи-знаний не хватает , да и не зачем .... 

Солярис

22 января 2018, 23:45:11 #12 Последнее редактирование: 23 января 2018, 00:01:53 от Солярис
Цитата: Yworld_garry от 22 января 2018, 22:54:07заменить preg_replace на preg_replace_callback...
По тексту всего файла Load.php менять на другое наименование?

Теперь зато другая бяка вылезает:
Код
2: _() expects parameter 1 to be string, array given
Файл: /адресация на хостинге/Sources/Load.php(198) : runtime-created function
Строка: 3

Yworld_garry

Цитата: Солярис от 22 января 2018, 23:45:11Теперь зато другая бяка вылезает:
Отсюда точно не видно почему у вас массив вместо строки и вообще что там.

Приводите кусок кода что вокруг ошибки.


GeorG

23 января 2018, 15:07:14 #14 Последнее редактирование: 23 января 2018, 15:36:16 от GeorG
Цитата: Солярис от 22 января 2018, 21:44:31Я полагаю, что Вам многое надо пояснять в юриспруденции, если Вы начнете задавать вопросы по этой области.

И я сомневаюсь, что на этом форуме общаются исключительно профи про администрированию серверов. Здесь полно вопросов от любителей.

Цитата: Василич от 22 января 2018, 23:23:00Полностью согласен ... Снобизм некоторых просто убивает ....
Если мне понадобится адвокат, я никогда не стану защищать себя сам, или стараться быстренько этому обучится, я обращусь к тому кто в этом сведущ, но если я захочу чему-то сам научится из правовой сферы (ну просто так, если будет у меня свободное время), то я начну с самых азов, а не стану мнить себя матёрым  юристом, и сразу возьмусь за их работу.
С вашими вопросами, вам надо начинать с азов (понимайте меня правильно, это не от гонора, я наоборот желаю вам и вашему форуму добра, и не хочу чтобы вы его как можно быстрее сломали), т.е, например сперва обратить своё внимание на самоучители по PHP или системного администратора (и это тоже разделить, а не браться сразу за всё), а не лезть сразу в код, в котором вы совершенно ничего не понимаете, т.к., вам подсказывают тут исходя из того, что азы вы уже прошли, тут не возможно дать вам готовый вариант, не видя ваш код целиком и не зная всех нюансов его работы на вашем форуме, а чтобы дать готовый код, нужно во всё это вникать, тратить на это время, т.е, это уже работа, точно такая же как та, что делает адвокат защищая своего подзащитного, и он берет за это плату, но он может подсказать и бесплатно, другому адвокату, исходя из того, что его не придётся обучать самому с самых первых шагов, объясняя даже значения аббревиатуры УК РФ, вот и вам тут подсказывают, исходя из того, что вас не придется всему обучать, по самоучителю (который вы и сами можете прочитать).


К тому же, это форум поддержки SMF, а не сисадминов, в общем, не вижу смысла в ваших упрёках.

з.ы. Старайтесь правильно понимать тех, кто вам пытается помочь (ограждая вас самих же от того, чтобы вы себе сами не навредили), а не стараться их поддеть, упрекнуть или чем-то обидеть, а то и помочь будет некому.

з.з.ы
Цитата: Солярис от 22 января 2018, 23:45:11Теперь зато другая бяка вылезает
Вы прямо наверное так и сделали, взяли, и просто заменили названия функций (по идеи, там вообще ничего менять не надо, если у вас php 5.3)?
Читайте выше, я говорил про самоучитель, и про то что тут исходят из того, что вы знаете как пользоваться функциями, и как те работают, ну или хотя бы в Гугл вобьете её название preg_replace_callback, и почитаете как её использовать. Смотрите что суете функции в самих параметрах, у preg_replace, вторым идёт строка или массив строк для замены, а в preg_replace_callback на этом месте задаётся калбак функция (которую надо писать, смотря на то, что она там у вас делает в коде).
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Yworld_garry

Когда я давал ответ про замену функции, примерно то же вкладывал в этот совет, о чем написал расширенно GeorG :coolsmiley:

Тут нет вариантов ответить вам сделайте вот так и все сразу заработает. Нужно весь код минимум смотреть и что там и для чего и отчего и почему вдруг не увеличивая версия php вдруг перестала старая функция работать.

Солярис

Вернул обратно preg_replace. Ошибки, вроде бы, исчезли.

Что касается кода, то вот кусок поболее (со строки 185 по 222):
Код
// Preg_replace can handle complex characters only for higher PHP versions.
 $space_chars = $utf8 ? (@version_compare(PHP_VERSION, '4.3.3') != -1 ? '\x{A0}\x{2000}-\x{200F}\x{201F}\x{202F}\x{3000}\x{FEFF}' : pack('C*', 0xC2, 0xA0, 0xE2, 0x80, 0x80) . '-' . pack('C*', 0xE2, 0x80, 0x8F, 0xE2, 0x80, 0x9F, 0xE2, 0x80, 0xAF, 0xE2, 0x80, 0x9F, 0xE3, 0x80, 0x80, 0xEF, 0xBB, 0xBF)) : '\xA0';
 
 $func = array(
 'entity_fix' => create_function('$string', '
 $num = substr($string, 0, 1) === \'x\' ? hexdec(substr($string, 1)) : (int) $string;
 return $num < 0x20 || $num === 0x202E || $num === 0x202D || $num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) ? \'\' : \'&#38;#\' . $num . \';\';'),
 'substr' => create_function('$string, $start, $length = null', '
 global $func;
 $ent_arr = preg_split(\'~(&#38;#' . (empty($modSettings['disableEntityCheck']) ? '\d{1,7}' : '021') . ';|&quot;|&amp;|&lt;|&gt;|&nbsp;|.)~' . ($utf8 ? 'u' : '') . '\', ' . implode('$string', $ent_check) . ', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
 return $length === null ? implode(\'\', array_slice($ent_arr, $start)) : implode(\'\', array_slice($ent_arr, $start, $length));'),
 'strlen' => create_function('$string', '
 global $func;
 return strlen(preg_replace(\'~' . $ent_list . ($utf8 ? '|.~u' : '~') . '\', \'_\', ' . implode('$string', $ent_check) . '));'),
 'strpos' => create_function('$haystack, $needle, $offset = 0', '
 global $func;
 $haystack_arr = preg_split(\'~(&#38;#' . (empty($modSettings['disableEntityCheck']) ? '\d{1,7}' : '021') . ';|&quot;|&amp;|&lt;|&gt;|&nbsp;|.)~' . ($utf8 ? 'u' : '') . '\', ' . implode('$haystack', $ent_check) . ', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
 $haystack_size = count($haystack_arr);
 if (strlen($needle) === 1)
 {
 $result = array_search($needle, array_slice($haystack_arr, $offset));
 return is_int($result) ? $result + $offset : false;
 }
 else
 {
 $needle_arr = preg_split(\'~(&#38;#' . (empty($modSettings['disableEntityCheck']) ? '\d{1,7}' : '021') . ';|&quot;|&amp;|&lt;|&gt;|&nbsp;|.)~' . ($utf8 ? 'u' : '') . '\',  ' . implode('$needle', $ent_check) . ', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
 $needle_size = count($needle_arr);

 $result = array_search($needle_arr[0], array_slice($haystack_arr, $offset));
 while (is_int($result))
 {
 $offset += $result;
 if (array_slice($haystack_arr, $offset, $needle_size) === $needle_arr)
 return $offset;
 $result = array_search($needle_arr[0], array_slice($haystack_arr, ++$offset));
 }
 return false;
 }'),

Сама строка под номером 198 из приведенного выше кода выглядит вот так:
Код
return strlen(preg_replace(\'~' . $ent_list . ($utf8 ? '|.~u' : '~') . '\', \'_\', ' . implode('$string', $ent_check) . '));'),

Перманентные подвисания в генерации страниц так и остались.

Yworld_garry

Как не странно, но Китайцы имеют ту же проблему)

А если заменить эту строку на вот такое

Код
if(function_exists(\'mb_strlen\')){
return mb_strlen($string,\'UTF-8\');
}else{
return strlen(preg_replace(\'~' . $ent_list . ($utf8 ? '|.~u' : '~') . '\', \'_\', ' . implode('$string', $ent_check) . '));
}

Насчет тормозов страниц тут точно никак не помочь без просмотра хотя бы какие процессы тормозят или виснут... Обратитесь к хостеру и пусть даст вам расклад что тормозит или зависает.

А может там иногда какие то рекламные блоки тормозят или баннеры или внешние картинки. Хотя вы вроде писали именно генерация страницы, внизу так и показывает, что генерация страницы столько то? Включить в админке, если не включено.

Солярис

Цитата: Yworld_garry от 23 января 2018, 20:12:08Обратитесь к хостеру и пусть даст вам расклад что тормозит или зависает.

А может там иногда какие то рекламные блоки тормозят или баннеры или внешние картинки. Хотя вы вроде писали именно генерация страницы, внизу так и показывает, что генерация страницы столько то? Включить в админке, если не включено.
1. Да хостер только переводит стрелки на сайт и движок. У них якобы все в порядке (и в работе серавера, и в работе программного обеспечения). А что якобы "тормозит" в работе движка - сами разбираетесь.
Отвечают, что длительная работа функции mysql_query() указывает на не оптимизированные запросы к базе данных. То, что одна страница (с одинаковым по объему текстом) может генерироваться то за доли секунды, то за несколько секунд - их не интересует.

2. Да, именно внизу показывается время, затраченное на генерацию страницы сайта. К примеру, так: Страница сгенерирована за 4.564 секунд. Запросов: 14.

Yworld_garry

Если у них все нормально, то как тогда функция которая по моему до php5.5 должна работать, отвалилась у вас на 5.3, значит подкрутили что то. Хотя возможно и есть еще варианты, я просто не знаю.

У вас сейчас тогда путь один, вырубать плагины которые на страничке задействованы и искать виновного. такая скорость никуда конечно не годится, по вылетает из индекса и потом устанешь возвращать. Еще оптимизировать базу.

Хотя самый лучший вариант не использовать не безопасные и устаревшие версии php. Собраться с силами и обновить форум до актуальной рабочей версии, подключить свежую php.

GeorG

Так то не сама функция тормозит, а запрос во время её выполнения слишком долгий.
Спросите у хостера, какой именно запрос тормозит, ещё можно во время выполнения (когда "призадумается" сервак), выполнить SHOW FULL PROCESSLIST; тогда будет отображено какой именно запрос у вас там.

Если у вас уже в логи вываливается предупреждение preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead, то значит у вас не РНР 5.3 версия, а РНР 5.5 или выше. Проверьте по факту какая у вас версия (не помню, можно ли это сделать через админку в SMF 1.1.21, если нет, то в Гугле есть инфа - как проверить версию php), и если не 5.3, то исправьте на неё.

Ну и надо капитально так подумать, об обновлении движка на актуальную версию.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис

Yworld_garry и GeorG, спасибо за ответы.

К сожалению, на вопрос "какой именно запрос тормозит" хостинг в очередной раз, скорее всего, переведет стрелки на то, что они предоставили инструменты - профайлер (xhprof) - для обнаружения хот-спотов и типа сами с ними и разбирайтесь, поскольку производить анализ обнаруженных запросов и их оптимизацию надлежит специалисту по разработке сайтов.

Вот и вся их "техническая поддержка".

+++++++++++++++

Что касается обновления версии движка, то возникает другой вопрос: до какой версии обновлять? До 2.0.15 или до версии SMF 2.1 Beta 3?
Как-то потом не очень хочется вновь задаваться вопросами перехода. Ведь версия 2.0.15 отличается от версии 2.1.

Yworld_garry

Цитата: Солярис от 24 января 2018, 17:36:29До 2.0.15 или до версии SMF 2.1 Beta 3?
Если бы была хотя бы в обозримом будущем перспектива, что 2.1 выйдет из бет, я бы рекомендовал его ставить. Но судя по тенденции, краев не видно.
2.0.15 думаю так будет проще и ваши моды скорее всего есть все или аналоги.

Единственно вам надо будет базу конвертнуть в utf8 и залить локаль эту же. Но все из админки, конечно бекапы и все такое.
И версию php поднять, не уверен в работе 2.0.15 на вашей версии, это в панеле хоста.

И когда свершится все же выход 2.1, сможете безболезненно мигрировать или обновится.

Солярис

А на бету лучше не ставить? Неужели такая "глючная" эта бета-версия?

Yworld_garry

Цитата: Солярис от 24 января 2018, 20:19:48А на бету лучше не ставить? Неужели такая "глючная" эта бета-версия?
Если сами справитесь с теми багами или глюками или не доработками которые есть, возможно проявятся или будут в следующей бете, то ставьте.
Может все или почти все судя по топикам и заработает сразу, а может надо пилить будет. бета, на то и бета, что бы тестить, а не использовать на рабочем сайте если нет определенных навыков.
Почитайте, тут не одна тема в соответствующем разделе и если готовы, то вперед)

GeorG

Цитата: Солярис от 24 января 2018, 17:36:29Что касается обновления версии движка, то возникает другой вопрос: до какой версии обновлять? До 2.0.15 или до версии SMF 2.1 Beta 3?
Тут даже вопроса не должно возникать, как по вашему что лучше работает - глючная бета версия 2.1 (которую сам разработчик не рекомендует ставить на рабочие проекты), или стабильная, последняя версия форума 2.0.15? Тут однозначно, выбор может быть только в сторону 2.0.15, а когда выйдет релиз 2.1 то можно будет немного обождав переходить на неё (подождать когда залатают возможные баги, и выпустят больше модов).
Только нужно учесть то, что последняя версия 2.0.15 работает только с версией PHP 5.4 и выше (иначе даже не запустится).
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис

Цитата: GeorG от 24 января 2018, 20:44:27Только нужно учесть то, что последняя версия 2.0.15 работает только с версией PHP 5.4 и выше (иначе даже не запустится).
Это как раз не проблема.

На хостинге можно хоть версию 7.1 установить (переключить одной кнопкой) или даже старую 4.4