MySQL 平均负载:18.00、14.48、6.91

MySQL 平均负载:18.00、14.48、6.91

请帮忙。

我对 MySQL 服务器或 apache 一无所知,我需要一个起点。为什么它这么高?

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 4991 mysql     20   0  207m  53m 4056 S  150  0.7   9:44.23 mysqld             
 9386 apache    20   0 41648  16m 3964 R   20  0.2   0:01.56 apache2            
 9370 apache    20   0 42460  17m 3972 R   16  0.2   0:01.46 apache2  

还有大约 25 个 Apache。如果我关闭 Apache,Mysql 的 CPU 使用率也不会降低。

当然我已经把它关闭然后又打开了。

请协助

该 MySQL 服务器已运行 0 天 0 小时 3 分 30 秒。它于 2009 年 9 月 29 日下午 3:46 启动

Server traffic: These tables show the network traffic statistics of this MySQL server since its startup.
Traffic Tip     ø per hour
Received    6,313 KiB   106 MiB
Sent    35 MiB  607 MiB
Total   42 MiB  712 MiB
Connections     ø per hour  %
max. concurrent connections     99  ---     ---
Failed attempts     0   0.00    0.00%
Aborted     0   0.00    0.00%
Total   31 k    529.08 k    100.00%


Query statistics: Since its startup, 95,049 queries have been sent to the server.
Total   ø per hour  ø per minute    ø per second
95 k    1.63 M  27.16 k     452.61
Query type  ø per hour  %
admin commands  0   0.00    0.00%
alter db    0   0.00    0.00%
alter table     0   0.00    0.00%
analyze     0   0.00    0.00%
backup table    0   0.00    0.00%
begin   0   0.00    0.00%
change db   37 k    633.33 k    57.56%
change master   0   0.00    0.00%
check   0   0.00    0.00%
checksum    0   0.00    0.00%
commit  0   0.00    0.00%
create db   0   0.00    0.00%
create function     0   0.00    0.00%
create index    0   0.00    0.00%
create table    0   0.00    0.00%
delete  0   0.00    0.00%
delete multi    0   0.00    0.00%
do  0   0.00    0.00%
drop db     0   0.00    0.00%
drop function   0   0.00    0.00%
drop index  0   0.00    0.00%
drop table  0   0.00    0.00%
drop user   0   0.00    0.00%
flush   0   0.00    0.00%
grant   0   0.00    0.00%
ha close    0   0.00    0.00%
ha open     0   0.00    0.00%
ha read     0   0.00    0.00%
help    0   0.00    0.00%
insert  204     3,497.14    0.32%
insert select   0   0.00    0.00%
kill    0   0.00    0.00%
load    0   0.00    0.00%
load master data    0   0.00    0.00%
load master table   0   0.00    0.00%
lock tables     0   0.00    0.00%
optimize    0   0.00    0.00%
preload keys    0   0.00    0.00%
purge   0   0.00    0.00%
purge before date   0   0.00    0.00%
rename table    0   0.00    0.00%
repair  0   0.00    0.00%
replace     1   17.14   0.00%
replace select  0   0.00    0.00%
reset   0   0.00    0.00%
Query type  ø per hour  %
restore table   0   0.00    0.00%
revoke  0   0.00    0.00%
revoke all  0   0.00    0.00%
rollback    0   0.00    0.00%
savepoint   0   0.00    0.00%
select  5,975   102.43 k    9.31%
set option  493     8,451.43    0.77%
show binlog events  0   0.00    0.00%
show binlogs    12  205.71  0.02%
show charsets   12  205.71  0.02%
show collations     12  205.71  0.02%
show column types   0   0.00    0.00%
show create db  0   0.00    0.00%
show create table   0   0.00    0.00%
show databases  12  205.71  0.02%
show errors     0   0.00    0.00%
show fields     80  1,371.43    0.12%
show grants     1   17.14   0.00%
show innodb status  0   0.00    0.00%
show keys   45  771.43  0.07%
show logs   0   0.00    0.00%
show master status  0   0.00    0.00%
show ndb status     0   0.00    0.00%
show new master     0   0.00    0.00%
show open tables    1   17.14   0.00%
show privileges     0   0.00    0.00%
show processlist    3   51.43   0.00%
show slave hosts    0   0.00    0.00%
show slave status   0   0.00    0.00%
show status     8   137.14  0.01%
show storage engines    0   0.00    0.00%
show tables     0   0.00    0.00%
show variables  31  531.43  0.05%
show warnings   0   0.00    0.00%
slave start     0   0.00    0.00%
slave stop  0   0.00    0.00%
stmt close  0   0.00    0.00%
stmt execute    0   0.00    0.00%
stmt prepare    0   0.00    0.00%
stmt reset  0   0.00    0.00%
stmt send long data     0   0.00    0.00%
truncate    0   0.00    0.00%
unlock tables   0   0.00    0.00%
update  469     8,040.00    0.73%
update multi    0   0.00    0.00%

Flush_commands      1    The number of executed FLUSH statements.
Slow_queries    4   The number of queries that have taken more than long_query_time seconds.Documentation
Begin SSL Variable  Value   Description
Ssl_accept_renegotiates     0   
Ssl_accepts     0   
Ssl_callback_cache_hits     0   
Ssl_cipher      
Ssl_cipher_list         
Ssl_client_connects     0   
Ssl_connect_renegotiates    0   
Ssl_ctx_verify_depth    0   
Ssl_ctx_verify_mode     0   
Ssl_default_timeout     0   
Ssl_finished_accepts    0   
Ssl_finished_connects   0   
Ssl_session_cache_hits  0   
Ssl_session_cache_misses    0   
Ssl_session_cache_mode  NONE    
Ssl_session_cache_overflows     0   
Ssl_session_cache_size  0   
Ssl_session_cache_timeouts  0   
Ssl_sessions_reused     0   
Ssl_used_session_cache_entries  0   
Ssl_verify_depth    0   
Ssl_verify_mode     0   
Ssl_version         
Begin Handler Variable  Value   Description
Handler_commit  0   The number of internal COMMIT statements.
Handler_delete  0   The number of times a row was deleted from a table.
Handler_discover    0   The MySQL server can ask the NDB Cluster storage engine if it knows about a table with a given name. This is called discovery. Handler_discover indicates the number of time tables have been discovered.
Handler_read_first  43  The number of times the first entry was read from an index. If this is high, it suggests that the server is doing a lot of full index scans; for example, SELECT col1 FROM foo, assuming that col1 is indexed.
Handler_read_key    14 M    The number of requests to read a row based on a key. If this is high, it is a good indication that your queries and tables are properly indexed.
Handler_read_next   20 M    The number of requests to read the next row in key order. This is incremented if you are querying an index column with a range constraint or if you are doing an index scan.
Handler_read_prev   619     The number of requests to read the previous row in key order. This read method is mainly used to optimize ORDER BY ... DESC.
Handler_read_rnd    21 k    The number of requests to read a row based on a fixed position. This is high if you are doing a lot of queries that require sorting of the result. You probably have a lot of queries that require MySQL to scan whole tables or you have joins that don't use keys properly.
Handler_read_rnd_next   32 M    The number of requests to read the next row in the data file. This is high if you are doing a lot of table scans. Generally this suggests that your tables are not properly indexed or that your queries are not written to take advantage of the indexes you have.
Handler_rollback    0   The number of internal ROLLBACK statements.
Handler_update  4,781 k     The number of requests to update a row in a table.
Handler_write   4,073 k     The number of requests to insert a row in a table.
Begin Query cache Variable  Value   Description
Flush query cache Documentation
Qcache_free_blocks  66  The number of free memory blocks in query cache.
Qcache_free_memory  30 M    The amount of free memory for query cache.
Qcache_hits     20 k    The number of cache hits.
Qcache_inserts  1,478   The number of queries added to the cache.
Qcache_lowmem_prunes    0   The number of queries that have been removed from the cache to free up memory for caching new queries. This information can help you tune the query cache size. The query cache uses a least recently used (LRU) strategy to decide which queries to remove from the cache.
Qcache_not_cached   4,498   The number of non-cached queries (not cachable, or not cached due to the query_cache_type setting).
Qcache_queries_in_cache     953     The number of queries registered in the cache.
Qcache_total_blocks     2,052   The total number of blocks in the query cache.
Begin Threads Variable  Value   Description
Show processes Documentation
Slow_launch_threads     0   The number of threads that have taken more than slow_launch_time seconds to create.
Threads_cached  46  The number of threads in the thread cache. The cache hit rate can be calculated as Threads_created/Connections. If this value is red you should raise your thread_cache_size.
Threads_connected   53  The number of currently open connections.
Threads_created     99  The number of threads created to handle connections. If Threads_created is big, you may want to increase the thread_cache_size value. (Normally this doesn't give a notable performance improvement if you have a good thread implementation.)
Threads_running     33  The number of threads that are not sleeping.
Threads_cache_hitrate_%     99.68 %     
Begin Binary log Variable   Value   Description
Documentation
Binlog_cache_disk_use   0   The number of transactions that used the temporary binary log cache but that exceeded the value of binlog_cache_size and used a temporary file to store statements from the transaction.
Binlog_cache_use    0   The number of transactions that used the temporary binary log cache.
Begin Temporary data Variable   Value   Description
Created_tmp_disk_tables     3,337   The number of temporary tables on disk created automatically by the server while executing statements. If Created_tmp_disk_tables is big, you may want to increase the tmp_table_size value to cause temporary tables to be memory-based instead of disk-based.
Created_tmp_files   0   How many temporary files mysqld has created.
Created_tmp_tables  4,880   The number of in-memory temporary tables created automatically by the server while executing statements.
Begin Delayed inserts Variable  Value   Description
Delayed_errors  0   The number of rows written with INSERT DELAYED for which some error occurred (probably duplicate key).
Delayed_insert_threads  0   The number of INSERT DELAYED handler threads in use. Every different table on which one uses INSERT DELAYED gets its own thread.
Delayed_writes  0   The number of INSERT DELAYED rows written.
Not_flushed_delayed_rows    0   The number of rows waiting to be written in INSERT DELAYED queues.
Begin Key cache Variable    Value   Description
Documentation
Key_blocks_not_flushed  0   The number of key blocks in the key cache that have changed but haven't yet been flushed to disk. It used to be known as Not_flushed_key_blocks.
Key_blocks_unused   13 k    The number of unused blocks in the key cache. You can use this value to determine how much of the key cache is in use.
Key_blocks_used     1,541   The number of used blocks in the key cache. This value is a high-water mark that indicates the maximum number of blocks that have ever been in use at one time.
Key_read_requests   27 M    The number of requests to read a key block from the cache.
Key_reads   2,413   The number of physical reads of a key block from disk. If Key_reads is big, then your key_buffer_size value is probably too small. The cache miss rate can be calculated as Key_reads/Key_read_requests.
Key_write_requests  43 k    The number of requests to write a key block to the cache.
Key_writes  193     The number of physical writes of a key block to disk.
Key_buffer_fraction_%   20.88 %     
Key_write_ratio_%   0.45 %  
Key_read_ratio_%    0.01 %  
Begin Joins Variable    Value   Description
Select_full_join    9   The number of joins that do not use indexes. If this value is not 0, you should carefully check the indexes of your tables.
Select_full_range_join  0   The number of joins that used a range search on a reference table.
Select_range    805     The number of joins that used ranges on the first table. (It's normally not critical even if this is big.)
Select_range_check  0   The number of joins without keys that check for key usage after each row. (If this is not 0, you should carefully check the indexes of your tables.)
Select_scan     4,115   The number of joins that did a full scan of the first table.
Begin Replication Variable  Value   Description
Show slave hosts Show slave status Documentation
Rpl_status  NULL    The status of failsafe replication (not yet implemented).
Slave_open_temp_tables  0   The number of temporary tables currently open by the slave SQL thread.
Slave_retried_transactions  0   Total (since startup) number of times the replication slave SQL thread has retried transactions.
Slave_running   OFF     This is ON if this server is a slave that is connected to a master.
Begin Sorting Variable  Value   Description
Sort_merge_passes   0   The number of merge passes the sort algorithm has had to do. If this value is large, you should consider increasing the value of the sort_buffer_size system variable.
Sort_range  47  The number of sorts that were done with ranges.
Sort_rows   21 k    The number of sorted rows.
Sort_scan   4,982   The number of sorts that were done by scanning the table.
Begin Tables Variable   Value   Description
Flush (close) all tables Show open tables
Open_tables     276     The number of tables that are open.
Opened_tables   282     The number of tables that have been opened. If opened tables is big, your table cache value is probably too small.
Table_locks_immediate   9,116   The number of times that a table lock was acquired immediately.
Table_locks_waited  56  The number of times that a table lock could not be acquired immediately and a wait was needed. If this is high, and you have performance problems, you should first optimize your queries, and then either split your table or tables or use replication.
Begin Variable  Value   Description
Open_files  368     The number of files that are open.
Open_streams    0   The number of streams that are open (used mainly for logging). 

答案1

自启动以来,已有 95,049 个查询被发送到该服务器。

3 分钟的正常运行时间相当令人印象深刻。之前一切运行良好吗?如果你关闭 Apache 并等待,mysqld CPU 使用率没有下降,两个服务都在同一个盒子上,我猜是其他人正在查询您的服务器。如果是这样,您可能需要从互联网上关闭该 mysql 端口。

如果您可以在 apache 关闭时将“show processlist;”的输出发布到您的 sql 服务器(假设这是一台非关键机器),这可能有助于阐明正在向 mysql 查询的内容。

$ mysql -u root -p
mysql> show processlist;

我知道我做了很多假设,但在两种服务运行的正常情况下,在我看来,您的网站陷入困境,要么很受欢迎,要么存在一些严重的垃圾邮件。

答案2

mysql 在做什么?您是否安装了 mytop,或者您可以检查 mysql 中 show processlist 的输出吗?

答案3

最有可能的是,您被磁盘 IO 杀死了 - 主要是写入,可能是由于过多创建临时表造成的。

如果问题出在临时表上:

尝试优化(如果可以的话)查询以避免临时表(例如,在运行时会得到它们)从表中选择某些内容按列分组]。

如果你无法更改 SQL 代码,你的数据集很小,你可以为 MySQL 提供更多内存 - 尝试在 my.cnf 中调整 max_heap_table_size 和 tmp_table_size,看看这里

您的值是多少long_query_time?看来您只有很少的慢查询 - 要么是因为long_query_time很高,要么是因为您收到大量在几秒钟内执行的查询。

你的数据集有多大?

答案4

答案是索引损坏或类似问题。我重建了数据库,然后复制了数据,然后就成功了。

很奇怪但我猜这是会发生的事情之一。

谢谢你的帮助!你真的帮了我大忙 :)

相关内容