lnmp性能优化

杂文apache,lnmp,nginx,PHP

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

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

反向代理(Reverse Proxy)方式是指以 代理服务器 来接受客户端的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个反向代理服务器。

PHP 优化

php.ini 中的配置

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

PHP 集成 memcache

  1. 安装 memcached
  2. 安装 memcached 的 php 扩展
  3. 启动memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256
  4. 使用:

$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");

 

Posted by 柴郡猫