插件窝 干货文章 Linux下LAMP如何优化性能

Linux下LAMP如何优化性能

优化 使用 opcache 缓存    来源:    2025-05-05

Linux下LAMP性能优化指南

LAMP(Linux+Apache+MySQL+PHP)是常见的Web服务器架构,以下是从各个组件出发的性能优化建议:

1. Linux系统优化

系统参数调整

# 增加文件描述符限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

# 调整内核参数
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
sysctl -p

磁盘I/O优化

  • 使用SSD硬盘
  • 对数据库使用单独磁盘
  • 调整文件系统挂载参数(noatime,nodiratime)
  • 考虑使用XFS文件系统

2. Apache优化

配置优化(httpd.conf或apache2.conf)

# 选择合适的工作模式
# prefork模式(适合PHP)
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 10000

# 或者event/worker模式(适合高并发)
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 10000

# 其他重要参数
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 100
Timeout 30
HostnameLookups Off
EnableSendfile Off # 对NFS禁用

模块管理

  • 禁用不需要的模块:mod_negotiation, mod_status, mod_info等
  • 启用缓存模块:mod_cache, mod_expires, mod_deflate

3. MySQL优化

my.cnf配置优化

[mysqld]
# 内存相关
key_buffer_size = 256M
innodb_buffer_pool_size = 1G # 物理内存的50-70%
query_cache_size = 64M
query_cache_limit = 4M

# InnoDB优化
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2 # 对性能要求高时可设为2(牺牲部分持久性)
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1

# 连接相关
max_connections = 200
thread_cache_size = 50
table_open_cache = 2000

其他MySQL优化

  • 定期优化表:OPTIMIZE TABLE tablename
  • 使用慢查询日志找出性能瓶颈
  • 合理设计索引

4. PHP优化

php.ini配置

memory_limit = 128M
max_execution_time = 30
post_max_size = 16M
upload_max_filesize = 16M

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

PHP代码优化

  • 使用OPcache
  • 避免在循环中执行SQL查询
  • 使用PHP 7.x或更高版本(性能比5.x提升显著)
  • 考虑使用HHVM作为PHP引擎

5. 其他优化建议

缓存策略

  • 使用Memcached或Redis缓存数据库查询结果
  • 实现页面级缓存(Varnish, Nginx缓存)
  • 使用CDN分发静态内容

架构优化

  • 考虑将静态内容分离到Nginx
  • 实现数据库读写分离
  • 对于高流量站点,考虑负载均衡

监控工具

  • 使用top, htop, iotop监控系统资源
  • 使用vmstat, sar分析系统性能
  • 使用Apache的mod_status和MySQL的SHOW STATUS监控服务状态

6. 安全优化(附带)

  • 定期更新所有组件
  • 配置适当的防火墙规则
  • 禁用不必要的服务
  • 使用mod_security等安全模块

优化后务必进行压力测试(如使用ab, siege等工具)验证效果,并根据实际负载情况持续调整参数。