Rah*_*aal 9 mysql performance database-performance
我的 MYSQL 服务器与 Cpanel 一起安装时遇到了一些问题。即使我在网络上没有太多流量,我的服务器也显示 100% 的 mysql 使用率。
我正在运行带有 80GB SSD 和 8GB RAM 的 CentOS 6.5x64 和 4CPU 内核。
我的.cnf:
[mysqld]
max_connections=500
key_buffer=128M
myisam_sort_buffer_size=35M
join_buffer_size=1M
read_buffer_size=1M
sort_buffer_size=2M
table_cache=4000
thread_cache_size=286
interactive_timeout=25
wait_timeout=7000
connect_timeout=10
max_allowed_packet=268435456
max_connect_errors=10
query_cache_limit=2M
query_cache_size=256M
query_cache_type=1
tmp_table_size=16M
innodb_buffer_pool_size=134217728
open_files_limit=10000
[mysqld_safe]
[mysqldump]
quick
max_allowed_packet=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
Run Code Online (Sandbox Code Playgroud)
这是 MySQLTuner 的输出:
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in MyISAM tables: 164M (Tables: 88)
[--] Data in InnoDB tables: 33M (Tables: 239)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 129
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 15m 2s (83K q [92.549 qps], 13K conn, TX: 44M, RX: 5M)
[--] Reads / Writes: 61% / 39%
[--] Total buffers: 544.0M global + 4.5M per thread (500 max threads)
[OK] Maximum possible memory usage: 2.7G (34% of installed RAM)
[OK] Slow queries: 0% (0/83K)
[OK] Highest usage of available connections: 23% (116/500)
[OK] Key buffer size / total MyISAM indexes: 128.0M/59.2M
[OK] Key buffer hit rate: 97.9% (24K cached / 527 reads)
[OK] Query cache efficiency: 54.3% (18K cached / 33K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 1% (5 temp sorts / 388 sorts)
[OK] Temporary tables created on disk: 0% (0 on disk / 374 total)
[OK] Thread cache hit rate: 99% (116 created / 13K connections)
[OK] Table cache hit rate: 98% (465 open / 474 opened)
[OK] Open file limit used: 3% (311/10K)
[!!] Table locks acquired immediately: 58%
[OK] InnoDB buffer pool / data size: 128.0M/33.6M
[OK] InnoDB log waits: 0
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
Optimize queries and/or use InnoDB to reduce lock wait
Run Code Online (Sandbox Code Playgroud)
这是我的 TOP 的输出:
top - 12:01:06 up 1 day, 1:02, 1 user, load average: 10.37, 9.22, 8.61
Tasks: 399 total, 1 running, 397 sleeping, 0 stopped, 1 zombie
Cpu(s): 84.1%us, 15.1%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.2%si, 0.7%st
Mem: 8191528k total, 6042780k used, 2148748k free, 242064k buffers
Swap: 0k total, 0k used, 0k free, 4785012k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24515 mysql 20 0 2732m 165m 6264 S 303.8 2.1 42:43.18 mysqld
19471 root 20 0 174m 10m 6148 S 1.0 0.1 0:00.03 php
19523 root 20 0 172m 10m 5864 S 1.0 0.1 0:00.03 php
19533 root 20 0 172m 9m 5804 S 0.7 0.1 0:00.02 php
19535 root 20 0 172m 10m 5864 S 0.7 0.1 0:00.02 php
Run Code Online (Sandbox Code Playgroud)
这个问题的原因可能是什么?
我是否必须更改 my.cnf 以防止服务器挂起?
或者我需要购买一个 16GB 内存的新服务器吗?
pik*_*kai 18
查看您的详细信息,我们可以得出以下一般建议:
您的READ:WRITE 比率 (61:39)给出了您的引擎类型应该更改为 的线索Innodb。在此之前检查输出
SHOW ENGINE INNODB STATUS\G;
SHOW FULL PROCESSLIST;
Run Code Online (Sandbox Code Playgroud)
在高峰时段。您很可能会在LOCK状态中看到查询。表锁是MyISAM. 如果你有大量并发的写入和选择,并且查询性能必须始终保持快速,Innodb由于更好的锁定机制是唯一的选择 ( row-level)
总碎片化表:129。运行OPTIMIZE TABLE并整理碎片以获得更好的性能
查看您的slow_query.log,检查 Query_time、Lock_time、Rows_sent、Rows_examined。如果您发现Rows Sent / Rows Examined 集合比率较高的查询,那么这些查询对optimization. slow_query.log 中的某些查询可能会占用大量 CPU 资源。
检查有关 RAM 和可用磁盘空间的服务器状态:free -m , df -h。如果您有可用内存,请增加innodb_buffer_pool_size以便有更多缓存。
在 MySQL 配置中调整这些参数总是好的
innodb_fast_shutdown=0 innodb_log_buffer_size innodb_log_file_size innodb_flush_method=O_DIRECT query_cache_size=0
警告:
清单 1:MySQL 进程的 CPU,如果可能的话增加 CPU
检查表 2:RAM,如果数据集适合 RAM。
清单3:连接相关的参数ABORTED_CONNECTS,CONNECTIONS,MAX_USED_CONNECTIONS,OPEN_FILES,OPEN_TABLES,OPENED_FILES,OPENED_TABLES,QUERIES,SLOW_QUERIES,THREADS_CONNECTED,THREADS_CREATED,THREADS_RUNNING,PERFORMANCE_SCHEMA,QUERY_CACHE_SIZE,WAIT_TIMEOUT,LONG_QUERY_TIME,INTERACTIVE_TIMEOUT,CONNECT_TIMEOUT,MAX_CONNECTIONS,LOCK_WAIT_TIMEOUT,TX_ISOLATION,MAX_ALLOWED_PACKET,GENERAL_LOG,TABLE_OPEN_CACHE,SLOW_QUERY_LOG,OPEN_FILES_LIMIT,INNODB_LOCK_WAIT_TIMEOUT
清单 4:内存相关参数key_buffer_size, query_cache_size, innodb_buffer_pool_size,innodb_log_buffer_size, max_connections, read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size, binlog_cache_size, thread_stack,tmp_table_size
清单 5:其他重要的 InnoDB 参数 innodb_log_file_size ,innodb_file_per_table ,innodb_flush_log_at_trx_commit ,innodb_flush_method ,innodb_fast_shutdown
清单 6:mysqltuner
在没有索引的情况下执行连接:表缓存命中率:
-------- MyISAM Metrics --------------------------------------------
[!!]
[!!] Write Key buffer hit rate:
-------- InnoDB Metrics --------------------------------------------
[!!] InnoDB buffer pool / data size:
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size :
[!!] InnoDB buffer pool instances:
Run Code Online (Sandbox Code Playgroud)
Checklist 7: Processlist 以下查询长时间处于“发送数据”状态
清单 8:慢查询日志 - Rows_examined 与 Rows_sent 比率非常高,
清单 9:重复索引(如果有)
清单 10:解释少数慢查询的计划
清单 11:检查 where 子句列是否正确索引(非索引查询)
清单 12:检查表锁、元数据锁、死锁(如果有)。
清单 13:任何维护作业都在间隔内运行(例如,mysqlcheck、mysqldump 等)
清单 14:硬件资源、慢速磁盘、RAID 重建、磁盘 I/O、饱和网络、网络带宽与线程数增加的吞吐量。
| 归档时间: |
|
| 查看次数: |
109631 次 |
| 最近记录: |