在Linux下优化LNMP(Linux, Nginx, MySQL, PHP)启动速度,可以从以下几个方面进行:
调整工作进程数:
worker_processes auto; # 或者设置为CPU核心数
启用keepalive:
keepalive_timeout 65;
keepalive_requests 100;
减少日志级别:
error_log /var/log/nginx/error.log debug;
access_log /var/log/nginx/access.log main buffer=32k flush=300s;
使用TCP nodelay和TCP nopush:
tcp_nopush on;
tcp_nodelay on;
调整缓冲区和缓存大小:
编辑/etc/my.cnf或/etc/mysql/my.cnf,增加以下配置:
[mysqld]
innodb_buffer_pool_size = 70% of RAM
key_buffer_size = 256M
query_cache_size = 64M
优化连接数:
max_connections = 500
启用查询缓存:
query_cache_type = 1
query_cache_size = 64M
使用SSD: 如果可能,将MySQL数据目录放在SSD上,以提高I/O性能。
调整PHP-FPM配置:
编辑/etc/php-fpm.d/www.conf,增加以下配置:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
启用OPcache:
编辑/etc/php/7.x/fpm/php.ini,增加以下配置:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
调整文件描述符限制:
编辑/etc/security/limits.conf,增加以下配置:
* soft nofile 65535
* hard nofile 65535
调整内核参数:
编辑/etc/sysctl.conf,增加以下配置:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
使用systemd优化启动服务: 确保Nginx和MySQL服务使用systemd启动,并设置适当的启动顺序和依赖关系。
使用监控工具: 使用如Prometheus、Grafana等工具监控系统性能,及时发现并解决问题。
分析日志: 定期分析Nginx和MySQL的日志文件,找出性能瓶颈和潜在问题。
通过以上优化措施,可以显著提高LNMP的启动速度和整体性能。根据实际情况调整配置参数,以达到最佳效果。