LAMP架构下提升PHP运行效率的综合策略
/etc/sysctl.conf中的TCP连接参数(如net.ipv4.tcp_tw_reuse=1复用TIME_WAIT连接)、文件描述符数量(fs.file-max=65535),提升系统并发处理能力。noatime减少文件访问时间记录)。Prefork(多进程,适合兼容性要求高的场景)、Worker(多线程,适合高并发)、Event(异步非阻塞,适合长连接),其中Event模式性能最优。mod_cache(缓存静态/动态内容)、mod_deflate(压缩响应内容,减少传输体积)、mod_expires(设置静态资源过期时间,利用浏览器缓存),提升响应速度。httpd.conf中的MaxRequestWorkers(最大并发请求数,根据服务器内存调整,如每进程占用10MB则设为内存(MB)/10)、MaxConnectionsPerChild(每个子进程处理的最大请求数,避免内存泄漏,如设为1000)。OPcache(PHP内置,无需额外扩展),编辑php.ini配置:opcache.enable=1(开启)、opcache.memory_consumption=64(分配64MB缓存内存)、opcache.max_accelerated_files=10000(缓存文件数量)、opcache.revalidate_freq=60(每60秒检查文件更新),减少脚本编译时间。www.conf:pm=dynamic(动态进程管理)、pm.max_children=50(最大子进程数,根据memory_limit和服务器内存计算,如1GB内存设为50)、pm.start_servers=5(启动时的子进程数)、pm.min_spare_servers=5(最小空闲进程数)、pm.max_spare_servers=35(最大空闲进程数),避免进程频繁创建/销毁的开销。php.ini中的memory_limit(根据应用需求设为128M或256M,避免过大导致内存耗尽)、max_execution_time(设为30或60秒,防止脚本超时)、upload_max_filesize/post_max_size(设为10M或更大,满足文件上传需求)。WHERE、JOIN、ORDER BY子句中的字段)创建索引,避免全表扫描;使用复合索引(覆盖索引)减少回表操作。SELECT *(只查询需要的字段)、减少子查询(用JOIN替代)、避免LIKE '%keyword%'(无法使用索引),使用EXPLAIN分析查询执行计划,优化慢查询。my.cnf(或50-server.cnf),优化innodb_buffer_pool_size(InnoDB缓冲池大小,设为系统内存的50%-80%,如8GB内存设为4GB-6GB)、query_cache_size(查询缓存,若查询重复率高可设为64M,但注意高并发写入场景可能降低性能)、max_connections(最大并发连接数,设为100-200,避免过多连接导致资源耗尽)。OPTIMIZE TABLE命令整理表碎片(针对MyISAM或InnoDB表)、定期执行mysqlcheck修复损坏的表(mysqlcheck -u root -p --all-databases --auto-repair)。session.save_handler=redis),提升会话读取速度。Cache-Control: max-age=3600(缓存1小时),利用浏览器缓存减少服务器请求。ob_start()函数开启输出缓冲),将页面内容缓存到内存或文件中,下次请求直接返回缓存内容,减少PHP脚本执行次数。JOIN语句替代多个单表查询(如查询用户及其订单时,用SELECT * FROM users LEFT JOIN orders ON users.id=orders.user_id),减少数据库访问次数。LIMIT offset, size),避免一次性加载所有数据导致内存溢出。upstream backend { server 192.168.1.1; server 192.168.1.2; }),提高系统吞吐量;将数据库与应用服务器分离(如数据库放在单独的服务器上),避免单台服务器资源耗尽。/var/log/apache2/access.log)、MySQL慢查询日志(slow_query_log=1),找出高频访问的URL、慢查询语句,针对性优化。