请求很慢-mysql 服务器?

请求很慢-mysql 服务器?

有时服务器需要很长时间才能处理请求。还会出现与 mysql 服务器的连接过多的错误。

我已将 max_connections 设置为 800,但这根本没有帮助。我还优化了数据库。

这是出现问题时的最佳输出。

top - 20:07:48 up 164 days, 13:21,  1 user,  load average: 10.70, 12.08, 11.45
Tasks: 186 total,   8 running, 178 sleeping,   0 stopped,   0 zombie
Cpu(s): 34.6%us,  6.7%sy,  0.0%ni,  2.0%id, 56.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   6291456k total,  1200580k used,  5090876k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
13780 mysql     15   0  122m  70m 4876 S    6  1.2  53:54.73 mysqld             
 3269 www-data  16   0 49792  26m 3988 S    4  0.4   0:00.36 apache2            
 3386 www-data  15   0 48016  24m 4032 S    4  0.4   0:00.35 apache2            
 3385 www-data  16   0 48020  24m 3920 S    3  0.4   0:00.21 apache2            
 3394 www-data  15   0 48048  24m 3924 S    3  0.4   0:00.20 apache2            
 3417 www-data  16   0 47984  24m 3960 S    3  0.4   0:00.30 apache2            
 3226 www-data  15   0 49012  26m 4200 S    3  0.4   0:00.36 apache2            
 3094 www-data  15   0 48040  24m 4100 S    3  0.4   0:01.33 apache2            
 3170 www-data  16   0 48028  25m 4180 S    3  0.4   0:00.45 apache2            
 3192 www-data  15   0 48252  25m 4036 S    3  0.4   0:00.48 apache2            
 3342 www-data  15   0 47980  24m 4000 S    3  0.4   0:00.36 apache2            
 3435 www-data  16   0 49008  25m 3844 S    3  0.4   0:00.20 apache2            
 1242 www-data  16   0 48048  24m 4132 S    2  0.4   0:00.72 apache2            
 1562 www-data  15   0 50136  27m 4620 S    2  0.4   0:01.66 apache2            
 3166 www-data  15   0 47980  24m 4012 S    2  0.4   0:00.52 apache2            
 3169 www-data  16   0 45596  23m 4256 R    2  0.4   0:01.29 apache2            
 3393 www-data  16   0 45580  22m 4012 R    2  0.4   0:00.21 apache2            

哪些数据也有助于识别问题?

这是来自 mysql 的输出:

mysql> show variables like '%cache%';
+------------------------------+------------+
| Variable_name                | Value      |
+------------------------------+------------+
| binlog_cache_size            | 32768      | 
| have_query_cache             | YES        | 
| key_cache_age_threshold      | 300        | 
| key_cache_block_size         | 1024       | 
| key_cache_division_limit     | 100        | 
| max_binlog_cache_size        | 4294967295 | 
| ndb_cache_check_time         | 0          | 
| query_cache_limit            | 1048576    | 
| query_cache_min_res_unit     | 4096       | 
| query_cache_size             | 16777216   | 
| query_cache_type             | ON         | 
| query_cache_wlock_invalidate | OFF        | 
| table_cache                  | 64         | 
| thread_cache_size            | 8          | 
+------------------------------+------------+

当问题再次出现时,我将发布 free 和 sar 的输出。


根据 mysql tuning primer,所有配置变量现在都正常,但是等待率仍然很高。您有什么提示可以找出导致高 I/O 流量的原因吗?

以下是 top 的输出:

top - 16:26:32 up 172 days,  9:40,  1 user,  load average: 5.29, 4.52, 3.45
Tasks:  35 total,   1 running,  34 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us,  2.0%sy,  0.0%ni,  0.0%id, 97.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   6291456k total,   122712k used,  6168744k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            

14118 mysql     15   0  109m  20m 4520 S    3  0.3   0:01.32 mysqld             
 1244 root      16   0 35224  19m 3856 D    2  0.3 204:41.52 apache2            
    1 root      15   0  1960  688  584 S    0  0.0   0:11.83 init               
 1041 root      15   0  5216  996  640 S    0  0.0   6:13.44 sshd               
1064 root      15   0  2328  824  660 S    0  0.0   0:35.44 xinetd             
1132 root      15   0 31292  28m 2344 S    0  0.5   0:55.09 spamd              
1166 qmails    16   0  1668  508  408 S    0  0.0   2:18.86 qmail-send         
1168 qmaill    18   0  1624  476  404 S    0  0.0   0:22.15 splogger           
1169 root      15   0  1652  388  292 S    0  0.0   0:02.71 qmail-lspawn       
1170 qmailr    15   0  1648  392  296 S    0  0.0   0:11.59 qmail-rspawn       
1171 qmailq    18   0  1620  356  288 S    0  0.0   0:12.25 qmail-clean        
1292 sw-cp-se  15   0  6448 4208 1460 S    0  0.1   7:39.56 sw-cp-serverd      
1456 root      15   0  2008  832  656 S    0  0.0   0:16.97 cron               
7561 root      16   0 10180 2892 2324 S    0  0.0   0:00.05 sshd               
7563 scirocco  15   0 10180 1648 1064 S    0  0.0   0:00.40 sshd               
7564 scirocco  20   0  4508 1972 1364 S    0  0.0   0:00.00 bash               
7567 root      18   0  7168 1900 1480 S    0  0.0   0:00.00 su                 

答案1

看起来您的机器在等待磁盘 (56.7%wa),并且您有很多可用内存,但只使用了 1G。所以对我来说,您的 mysql 似乎没有使用缓存,这就是它等待磁盘很长时间的原因,这会增加服务器负载。

尝试增加服务器的内存,特别是缓存的内存。

相关内容