Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Флудильня Обо всем долгий WAITING TTFB


Андрей (R4W) 5422 октября 2018 г.

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

У меня на VDS php7 + apache + nginx

Сайт достаточно сильно перепиленный, но вроде бы не то чтобы драмматично.

При http запросе страницы имеем нормальный ответ сервера в райноне 200мс хотя хотелось бы быстрее, но WAITING TTFB (ожидание 1го байта) идет больше 2х секунд. http://take.ms/UTrka

Не понимаю это у меня где-то в кастомизации затык, что так долго на стороне CMS генерится прежде чем начать выплевывать первые байты. Т.е. где-то что-то тупит, а никаких промежуточных echo нету тк в diafan буфферизация вывода идет.

Или вообще в настройке nginx/apache/php/mysql надо что-то пинать? Есть у кого методология?

Виталий (DIAFAN.CMS) 62822 октября 2018 г.

Для начала включить режим разработчика и ткнуть галку "Профилирование запросов БД" и посмотреть какие запросы тупят.
Профилирование в БД предварительно нужно разрешить на хостинге

Андрей (R4W) 5423 октября 2018 г.

Не знаешь что в my.conf писать чтобы профилирование запустилось на 5.7?

Чет гугл не помог.

Виталий (DIAFAN.CMS) 62823 октября 2018 г.

В консольке
mysql> SET profiling = 1;

Андрей (R4W) 5423 октября 2018 г.

Короче очистил таблицу сессий и все стало норм. Сессий то было всего штук, а такие лаги.

Откуда тормоза такие кто-нибудь знает?

Вроде была тема на форуме

Степан (idxdoc) 12923 октября 2018 г.

На одном сайте был форум, там не стояло капчи, туда начали много спамить, в час по 1-3000 запросов, пару сайтов легло из-за него, удалил этот форум и все стало ок.
Проверь, может кто запросы тебе шлет спамные.

Андрей (R4W) 5423 октября 2018 г.

Так а сессии то тут причем?

Виталий (DIAFAN.CMS) 62823 октября 2018 г.

Сессии сохраняются в таблице, и запросы в таблицу сессии идут через ядро. Если в таблице сессий 100500 записей, весь сайт будет тормозить, тем более, если она неоптимизирована и сыпется спам, на каждый коннект создается новая сессия по 10 в секунду.
Как вариант, можно уменьшить время автоочистки таблицы сессий с двух недель до пары дней.

Виталий (DIAFAN.CMS) 62823 октября 2018 г.

Цитата
Сессий то было всего штук, а такие лаги.
Всего штук - это сколько?
Оптимизацию таблицы ткнули после очистки?

Андрей (R4W) 5423 октября 2018 г., редакция 23 октября 2018 г.

Всего 800 сессий то было, чет никакую профилирование не заводится, так бы отловил может через него.

Индекс только на user_id это норм?

Цитата


CREATE TABLE `diafan_sessions` (
`user_id` int(11) unsigned NOT NULL DEFAULT '0',
`session_id` varchar(64) NOT NULL DEFAULT '',
`hostname` varchar(128) NOT NULL DEFAULT '',
`user_agent` varchar(255) NOT NULL DEFAULT '',
`timestamp` varchar(20) NOT NULL DEFAULT '0',
`session` text NOT NULL,
PRIMARY KEY (`session_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;




Виталий (DIAFAN.CMS) 62823 октября 2018 г.

Индекс только на user_id это норм?

Да, она же только по этому полю соединяется с другими таблицами https://www.diafan.ru/dokument/full-manual/developers/architecture/db/#sessions и та одна.
чет никакую профилирование не заводится, так бы отловил может через него.
На хостинг обратитесь, профилирование может быть запрещено выше админами.
Всего 800 сессий то было
это совсем мало. На хорошем посещаемом сайте за пару недель под сотню тысяч может набиться

Андрей (R4W) 5423 октября 2018 г., редакция 23 октября 2018 г.

Код
mysql> SET profiling = 1;


От рута делал.

Наверно надо от юзера которым сайт коннектится :)