面试题答案
一键面试网络配置
- 优化网络带宽
- 策略:确保服务器网络带宽充足,如有可能升级网络设备及链路,如从百兆升级到千兆甚至万兆网络。
- 原理:高并发场景下,大量数据在客户端和服务器间传输,更大带宽可减少数据传输延迟,提升数据交互速度。
- 副作用:增加网络成本,如设备采购、网络租赁费用。同时可能对服务器网卡等硬件要求提高,需升级硬件。
- 调整TCP参数
- 策略:优化TCP缓冲区大小,如调整
tcp_rmem
和tcp_wmem
,增大net.ipv4.tcp_max_syn_backlog
等。例如,将tcp_rmem
最小值、默认值、最大值适当增大,net.ipv4.tcp_max_syn_backlog
根据服务器性能合理增大。 - 原理:合适的TCP缓冲区能更高效地缓存网络数据,减少丢包和重传;增大
net.ipv4.tcp_max_syn_backlog
可增加半连接队列长度,应对高并发连接请求,减少连接拒绝。 - 副作用:不当增大TCP缓冲区可能占用过多系统内存,影响其他进程运行;增大
net.ipv4.tcp_max_syn_backlog
可能使服务器遭受恶意连接攻击风险增加,若攻击成功可能导致系统资源耗尽。
- 策略:优化TCP缓冲区大小,如调整
服务器参数调优
- 调整缓冲池大小
- 策略:对于InnoDB存储引擎,根据服务器内存大小合理调整
innodb_buffer_pool_size
,一般可设置为服务器物理内存的60% - 80%。 - 原理:InnoDB缓冲池用于缓存数据和索引,增大其大小可使更多数据和索引驻留在内存,减少磁盘I/O,提高查询速度。
- 副作用:占用过多内存可能导致系统内存不足,影响其他进程运行,极端情况下可能引发系统频繁交换内存,大幅降低整体性能。
- 策略:对于InnoDB存储引擎,根据服务器内存大小合理调整
- 优化线程参数
- 策略:调整
thread_cache_size
,适当增大该值,比如设置为100 - 200(根据服务器负载情况);调整max_connections
,根据服务器硬件性能和预估并发量合理设置,避免设置过大导致资源耗尽。 - 原理:
thread_cache_size
用于缓存空闲线程,当有新连接请求时可直接从缓存获取线程,减少线程创建和销毁开销;合理的max_connections
可确保服务器在可承受范围内处理连接,避免过多连接耗尽资源。 - 副作用:
thread_cache_size
设置过大浪费内存资源;max_connections
设置过小可能导致部分客户端连接被拒绝,设置过大可能因资源耗尽导致服务器性能急剧下降甚至崩溃。
- 策略:调整
- 调整日志参数
- 策略:对于InnoDB,可适当调整
innodb_flush_log_at_trx_commit
,设为2(兼顾性能和数据安全性)。 - 原理:该参数控制日志写入磁盘的频率,设为2时,每秒将日志缓冲区数据写入日志文件并刷新到磁盘,相比设为1(每次事务提交都写入并刷新)减少了I/O次数,提升性能。
- 副作用:在系统崩溃时可能丢失1秒内的事务数据,数据安全性稍有降低。
- 策略:对于InnoDB,可适当调整
存储引擎选择
- InnoDB
- 策略:对于高并发且对事务完整性要求高的场景,优先选择InnoDB。
- 原理:InnoDB支持事务、行级锁,能有效减少锁争用,适合高并发读写操作。其缓冲池机制可缓存数据和索引,提升查询性能。
- 副作用:相比MyISAM,InnoDB存储引擎占用更多内存和磁盘空间,尤其是缓冲池需要大量内存支持;写入操作相对较慢,因为要考虑事务日志写入等操作。
- MyISAM
- 策略:若应用场景以读为主,写操作较少且对事务要求不高,可考虑MyISAM。
- 原理:MyISAM表级锁机制在写操作少的情况下,读性能较高,且占用资源相对较少。
- 副作用:不支持事务,在需要事务保证数据一致性场景下无法满足需求;写操作时锁表,会阻塞其他读写操作,高并发写入性能差。