Медленно работает сайт

lolka02

Новичок
Есть сайт с посещаемость 1700 посетителей в день, в среднем онлайн 18, движок yii на сервере связка nginx+php-fpm. Очень медленно открывается, думал из за запросов переписал все равно скорость особо не увеличилась, попробовал скопировать файлы сайта и запустить от имени другого ssh пользователя, другой pool fpm (или как называется в конфигах указываю другой порт, ) меняю порт fastcgi_pass 127.0.0.1:9001 на fastcgi_pass 127.0.0.1:9002 и параллельно запускаю с другим доменом, все быстро работает. Где что настроить чтобы не было большой нагрузки?

может в конфигах пула что то править надо, вот конфиг
может вот эти конфиги как то поправить
[site.ru]
listen = 127.0.0.1:9001
user = site
group = site
listen.owner = site
listen.mode = 770
chdir = /home/site/data/
pm = ondemand
pm.max_children = 4
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Проблема не в сервере и не в php, проблема в приложении.
Не обязательно запросы может быть кеш какой-нибудь. Надо исследовать, профайлить.
 

lolka02

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

lolka02

Новичок
pm.max_children = 4 увеличил до 20 начал получать ошибки SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
как там в Простоквашино: поздравляю, Шарик, ты ... приплыл :)
у тебя локи, если еще и в innodb - придется переписать большую часть приложения
 

alek13

Новичок
...1700 посетителей в день, ... онлайн 18, движок yii ...
может в конфигах пула...
1700/день - это ни о чём.
и тут настройки пула тоже не помогут (думаю настолько коряво его настроить вообще не возможно - он всё равно будет справляться).
вот тебе на всякийслучай (на будущее) ссылка про php-fpm , но там речь совсем о других цифрах.

и как правильно сказал @grigori
@lolka02, прости, по фотографии диагноз не ставим
в таких случаях рекомендую начинать с простого `dstat` (`sudo apt install dstat`) чтобы локализовать ресурс машины и копать дальше, НО!:

т.к. уже ясно, что
General error: 1205 Lock wait timeout exceeded; try restarting transaction
, то стоит искать здесь.
конечно же это проблема вряд ли относится к MySql.
сокрее всего в самом вашем приложении что-то лочит таблицы.
правда не понятно почему, т.к. вы упомянули, что оно на Yii (должно быть норм).
рекомендую гуглить саму ошибку и что такое lock в mysql
постарайтесь определить кто лочит (думаю ваше приложение, ну или кто-то к вам на сервер подкинул бота..)
поможет:
[SQL]
SHOW PROCESSLIST;
[/SQL]
[SQL]
SHOW ENGINE INNODB STATUS;
[/SQL]
[SQL]
SELECT * FROM `information_schema`.`innodb_trx` ORDER BY `trx_started`;
[/SQL]
[SQL]
SELECT * FROM `information_schema`.`innodb_locks`;
[/SQL]

далее, найдя какой запрос/транзакция лочит базу, вы поймёте (надеюсь) из какого места приложения это происходит и что делать. обычно это запросы апдейта или вставки и вот тут тоже не понятно почему, т.к. при 18 одновременных пользователях это звучит как минимум странно...

удачи!!! :)
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
еще я сказал, что с локами в базе больше можно никуда не смотреть
 
Сверху