CentOS下SQLAdmin性能提升方法
编辑/etc/sysctl.conf文件,调整以下关键参数以优化网络连接和I/O性能:
net.core.somaxconn = 65535:增加最大连接队列长度,避免高并发时连接被拒绝;net.core.netdev_max_backlog = 65535:提升网络设备接收队列容量,减少丢包;net.ipv4.tcp_max_syn_backlog = 65535:增加SYN连接队列大小,应对大量并发连接请求;net.ipv4.tcp_fin_timeout = 10:缩短TCP连接关闭后的TIME_WAIT状态时长(默认60秒),释放资源;net.ipv4.tcp_tw_reuse = 1:允许复用TIME_WAIT状态的连接,提高连接利用率;net.core.wmem_default = 87380/net.core.wmem_max = 16777216:调整TCP发送缓冲区大小,优化网络吞吐量;net.core.rmem_default = 87380/net.core.rmem_max = 16777216:调整TCP接收缓冲区大小,提升数据接收效率。sysctl -p使配置生效。编辑/etc/security/limits.conf文件,增加文件描述符限制(避免数据库因文件打开过多而崩溃):
* soft nofile 65536:普通用户软限制(临时生效);* hard nofile 65536:普通用户硬限制(永久生效)。编辑MySQL配置文件(/etc/my.cnf或/etc/mysql/my.cnf),调整以下核心参数:
innodb_buffer_pool_size = 系统总内存×50%-80%:InnoDB缓冲池是MySQL最重要的内存结构,用于缓存数据和索引,合理设置可减少磁盘I/O(如8GB内存服务器可设置为4-6GB)。innodb_log_file_size = 256M-2G:日志文件越大,redo log写入频率越低,提升写入性能(建议设置为缓冲池大小的25%-50%);innodb_log_buffer_size = 128M:增大redo log缓冲区,减少磁盘写入次数。innodb_io_capacity = 200-2000:根据SSD性能设置(SATA SSD设为200-500,NVMe SSD设为1000-2000),表示InnoDB后台任务的I/O处理能力;innodb_io_capacity_max = 2000-20000:I/O处理能力上限,配合innodb_io_capacity使用。max_connections = 200-500:根据应用并发需求调整(避免设置过高导致内存耗尽);back_log = 1024:增大连接请求队列长度,应对突发高并发;open_files_limit = 65536:增加数据库能打开的文件数,避免表文件无法打开。innodb_flush_log_at_trx_commit = 2:牺牲部分数据安全性(宕机可能丢失1秒数据)换取更高写入性能(适用于对数据一致性要求不高的场景);vm.swappiness = 10-100(/etc/sysctl.conf):降低交换分区使用率(设为10表示系统仅在内存不足10%时使用swap),优先使用内存。SELECT *:只查询需要的列,减少数据传输量;JOIN操作:优化表关联逻辑,避免多表深度关联;LIMIT分页:如SELECT * FROM orders LIMIT 10 OFFSET 20,避免一次性返回大量数据;EXPLAIN命令查看查询执行路径,识别全表扫描、临时表等瓶颈。WHERE条件、JOIN字段、ORDER BY字段创建索引(如CREATE INDEX idx_status_created ON orders(status, created_at));SELECT user_id, created_at FROM orders WHERE status = 'processing',索引(status, user_id, created_at)可避免回表);OPTIMIZE TABLE或ALTER TABLE table_name ENGINE=InnoDB重建碎片化索引,提升查询效率。OPTIMIZE TABLE命令(如每周一次),整理表碎片、释放未使用空间(适用于频繁更新的表);ANALYZE TABLE命令更新表统计信息,帮助优化器生成更优的执行计划(如每天凌晨执行);MySQLTuner(脚本分析)、Percona Toolkit(高级诊断)、Prometheus+Grafana(可视化监控)监控数据库性能,识别慢查询、高负载等问题;slow_query_log = 1,long_query_time = 1),记录执行时间超过1秒的查询,针对性优化;top、htop、iostat等命令监控系统资源(CPU、内存、磁盘I/O)使用情况,及时发现瓶颈。NetworkManager(使用传统网络服务)、SELinux(若不需要安全增强),减少系统资源占用。