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
- 安装 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");