LINUX.ORG.RU
ФорумAdmin

Дико тормозит сервер php+mysql+apache+nginx

 ,


0

1

Всем привет. Столкнулся с такой проблемой. Стал сильно тормозить сервер. top - 15:15:30 up 1:07, 1 user, load average: 16.73, 17.41, 15.24

При этом ядра практически не загружены, Оперативная память тоже вся свободна.

Mysql переодичестки вылетает с ошибкой Too Many connections.

Mysql:


bind-address		= 127.0.0.1
key_buffer_size		= 16M
thread_stack		= 192K
thread_cache_size       = 16
myisam-recover-options  = BACKUP
max_connections        = 64
wait_timeout = 5
join_buffer_size = 1M
tmp_table_size = 64M
max_heap_table_size = 64M
log_error = /var/log/mysql/error.log
log_queries_not_using_indexes  = 0
slow_query_log		= 1
slow_query_log_file	= /var/log/mysql/mysql-slow.log
long_query_time = 2

innodb_log_file_size = 128M

connect_timeout = 3
wait_timeout = 3
max_connections = 300
thread_cache_size       = 50

При замерах сколько на что тратится времени показывает что запросы выполняются быстро, апач работает немного дольше. Ошибка такая появилась после возросшей посещаемости в 20 раз. php-fpm вместо apache ничего не дал. При этом в slow query часто попадают простенькие запросы. Сталкивался ли кто-нибудь с подобным и куда можно покопать?


В логах вот такие сообщения попадают

2020-03-18T09:28:25.377665Z 211135 [Note] Aborted connection 211135 to db: 'data' user: 'sitemysql' host: 'localhost' (Got timeout reading communication packets)

По этому поводу гугл говорит что проблема в незакрытых соединениях, проверил, закрывал.

Show processes mysql говорит что соединений не больше 50-70 и то в основном sleep

badil ()
Последнее исправление: badil (всего исправлений: 1)

Если процессорной нагрузки никакой, а LA высокий (не знаю, какие процессоры установлены, по-умолчанию предполагаю, что процессор один и не самый мощный, соответственно, LA=16 - это много), значит, процессы стоят в очереди к процессору на исполнение и у них тормозит IO. Сеть, диск (в т.ч. фрагментация данных), может, выставленный DNS тупит адово и тормозит процессы и т.д.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

При этом в slow query часто попадают простенькие запросы.

Мимо крокодил но. Типа select * from tablename. Где в tablename овер дофига записей с varchar.
Или чуть похуже select * from tablename t1 where (t1.fieldname not in (select t2.fieldname from tablename2 t2). Где обе таблицы и поля содержут убер дофига записей varchar.
Ну или left join кучи таблиц.
Гадать можно долго.
Почему-то вэберы считают это вообще нормальным. А потом удивляются говорят «для нашей высоко нагруженной системы» надо очень мощные сервера.

ЗЫ Не в обиду лично вам, возможно у вас и не так. Но как-то слишком напоминает.

anc ★★★★★ ()

В чем таблицы хранятся? В innodb? Если да, то он у тебя вообще не настроен - там дефолтные настройки такие, чтобы mysql мог запускаться на 64 мегабайтах памяти.
Возможно у тебя deadlock'и еще.
Посмотри вообще как себя чувствует innodb:

show engine innodb status\G

adn ★★★ ()

цена вопроса?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.