фон: это сервер с процессором 92G / 20 с ubuntu 18.04
mysql Ver 15.1 Distrib 10.1.41-MariaDB, для debian-linux-gnu (x86_64) с использованием строки чтения 5.2
выпуск:
root@z:# time mysql -uroot -pXXX -e "select now()"
+---------------------+
| now() |
+---------------------+
| 2019-09-25 14:10:24 |
+---------------------+
real 0m22.267s
user 0m0.000s
sys 0m0.006s
для подключения mysql требуется 20 секунд.
ВАЖНО: так бывает не всегда, бывает, когда к нам приезжает больше. мы используем php-fpm, а не PERSISTENT = true для PDO, поскольку это соединение localhost, оно использует сокеты (так что это не проблема TCP или сети).
обычно это занимает 0,0X секунды.
iostat:
Linux 4.15.0-50-generic (fdb) 09/25/2019 _x86_64_ (20 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
48.22 0.00 17.26 0.79 3.08 30.65
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.00 0.00 0.00 8 0
sdb 0.09 0.27 2.20 24628 204340
sda 735.43 1740.89 5578.76 161421385 517281936
вроде нормально.
mysql conf:
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
skip-host-cache
skip-name-resolve
bind-address = 0.0.0.0
key_buffer_size = 128M
max_allowed_packet = 32M
thread_stack = 192K
thread_cache_size = 32
wait_timeout = 60
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam_recover_options = BACKUP
max_connections = 30000
max_connect_errors = 3000
#table_cache = 64
#thread_concurrency = 10
tmp_table_size = 512M
max_heap_table_size = 512M
table_open_cache = 4096
performance_schema = on
innodb_buffer_pool_size=48G
innodb_log_file_size=6144M
innodb_buffer_pool_instances=20
innodb_purge_threads=8
innodb_flush_log_at_trx_commit=2
у нас есть skip-name-resolve, так что это не проблема DNS
mysql status извините, он слишком велик, поэтому я сделал это в сущности: https://gist.github.com/fayland/97050f70cb258a41f1fa1bd3046df4d2
Было бы здорово, если бы кто-нибудь указал нам направление для проверки. Если вам нужна дополнительная информация, мы будем рады ее предоставить.
Спасибо
Рекомендации для вашего раздела my.cnf [mysqld]
thread_cache_size=256 # from 32 for default with v 10.0.38
innodb_io_capacity=1900 # from 200 to enable higher IOPS to your SSD devices
read_buffer_size_256K # from 128K to reduce handler_read_next RPS of 2,337,990
read_rnd_buffer_size=128K # from 256K to reduce handler_read_rnd_next RPS of 1,982,624
innodb_flushing_avg_loops=5 # from 30 to reduce delays and reduce innodb_buffer_pool_pages_dirty of 23,455
thread_concurrency=18 # from 10 to use more of your 20 cores
innodb_log_buffer_size=2G # from 8M to support about 7 log minutes in RAM
Для вашего экземпляра нужно настроить больше глобальных переменных. Отказ от ответственности: я являюсь автором содержания веб-сайта, указанного в моем профиле, сетевом профиле, где вы можете скачать БЕСПЛАТНЫЕ служебные скрипты, и рассмотреть возможность дополнительных услуг анализа.