LAMP 性能优化

Apache 优化

Apache 采用的是 MPM(Multi-Processing Module) 多道处理模块。
它的作用是管理网络连接,调度请求。

常见的 MPM 有 3 种:

  • prefork“要求每个请求互相独立的情况下” 表现最好的 Web 服务器(Apache 默认)。
  • worker:支持混合的多线程进程。利用了线程低开销的特点来支持更大量的请求。
  • event

一些设置

  • MaxClients:(prefork 模式)Apache 同时处理的请求数目。

  • MaxRequestsPerChild:(prefork 模式)进程处理多少个请求后将自动销毁。

    • 0 为无限,永不销毁
    • 负载高时,设置为 0 或者比较大的值,以处理更多的请求
    • 负载低时,设置为比较小的值,以释放内存
  • ThreadsPerChild:(worker 模式)

实时查看 Apache 线程状态
netstat -n | awk '/^tcp/{++S[$NF] END {for(a in S) print a, S[a]}}'
可以展示不同状态的连接信息。

netstat 用于显示各种网络相关信息

  • netstat -a:显示所有
  • netstat -t:显示 TCP 相关
  • netstat -u:显示 UDP 相关
  • netstat -l:LISTEN 的服务

Apache VS Nginx

Apache Nginx
轻量级,反向代理
阻塞处理方式 异步非阻塞处理方式
一个连接对应一个进程 多个连接对应一个进程
更适合动态请求,例如 PHP 更适合静态请求,例如 图片,HTML, CSS

Nginx相对于Apache的优点:

  • 轻量级,同样启动WEB服务,比Apache占用更少的内存以及资源;
  • 并发性能高,核心区别在于Apache是同步多进程模型,一个连接对应一个进程。Nginx是异步的,多个连接(万级别)可以对应一个进程;
  • Nginx模块较少,配置简单,所以Nginx可以将资源用在数据处理以及进程上面,Apache模块较多比较全,相对稳定,但在内存资源上消耗比较大;
  • Nginx可以在不间断的情况下进行软件版本的升级;
  • Nginx处理静态页面性能比apache高3倍多

PHP 优化

php.ini 中的配置

  • max_execution_time = 30:PHP 脚本最长执行时间
  • memory_limit = 8M:PHP 脚本最大占用内存
  • upload_max_filesize = 2M
  • output_buffer

PHP 集成 memcache

  1. 安装 memcached
  • 安装 memcached 的 php 扩展
  • 启动 memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256
  • 使用:
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);

// 设置
$mem->set("name", "Tom", 0, 60);
$val = $mem->get("name");

// 更新
$mem->replace("name", "Tom", 0, 60);
$val = $mem->get("name");

// 删除
$mem->delete("name");

$arr = array("a", "b", "c");
$mem->set("arr", $arr, 0, 60);
$arr = $mem->get("arr");

你可能感兴趣的:(LAMP 性能优化)