1.环境软件
1.1apache
查看apache运行版本以及详情
httpd -V
linux或unix 默认perfork模式,每一次请求生成一个进程
windows 默认winnt模式,默认生成一个父进程,有请求时生成子进程,子进程调用线程
worker模式预生成几个进程,有请求时,由进程调用线程处理
100并发,请求10000次
ab -n 10000 -c 100 http://localhost
修改最大连接数
<IfModule mpm_winnt_module>
#每个子进程的最大并发线程数
ThreadPerChild 150 #推荐配置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3000
#每个子进程允许处理的请求数。累计处理请求数超过该值,该子进程会结束(然后根据需要确定是否创建新的子进程。0表示无限制,设置非零防止内存无限泄漏,同时给进程一个寿命,当服务器负载减轻时活动的进程数减少。
MaxRequestPerChild 0 #推荐配置: 小=10000 中或大=20000~100000
</IfModule>
<IfModule mpm_perfork_module>
#启动apache时创建的子进程数
StartServers 5 # 小=默认 中=20~50 大=50~100
#空闲状态最小子进程数
MinSpareServers 5 # 与StartServers保持一致
#空闲状态最大子进程数
MaxSpareServers 10 # 小=20 中=30~80 大=80~120
#允许同时连接的最大子进程数
MaxClients 150 # 小=500 中=500~1500 大=1500~3000
MaxRequestsPerChild 0 # 小=10000 中或大=10000~500000
(此外还需要设置ServerLimit,最好于MaxClients保持一致)
</IfModule>
中等配置
ServerLimit 1500
MaxClients 1000
pv百万
ServerLimit 2500
MaxClients 2000
<IfModule mpm_worker_module>
StartServers 2 #小=默认 中=3~5 大=5~10
MaxClients 150 #小=500 中=500~1500 大=1500~3000
#空闲状态最小线程数
MinSpareThreads 25 #小=默认 中=50~100 大=100~200
#空闲状态最大线程数
MaxSpareThreads 75 #小=默认 中=80~160 大=200~400
ThreadsPerChild 25 #小=默认 中=50~100 大=100~200
MaxRequestsPerChild 0 #小=10000 中或大=10000~500000
(此外如果MaxChilds/ThreadsPerChild大于16,ServerLimit必须大于它们的值)
</IfModule>
2.负载均衡
流程:
浏览器-》负载均衡-》apache-》缓存-》返回
浏览器-》负载均衡-》apache-》数据库负载均衡-》mysql-》返回
2.1硬件 f5 big-ip netscaler
2.2软件lvs nginx反向代理
2.3mysql 读写分离
2.3.1dml语句(insert,delete,update)
2.3.2select语句
2.3.3dcl语句(数据控制语句)
2.3.4dtl语句(数据事务语句savepoint commit rollback)
2.3.5ddl语句(数据定义语句 create,drop)
3.程序
3.1静态化
3.1.1 不需要数据库操作,加快速度
3.1.2不接受参数,没有sql注入等安全性问题
3.1.3利于seo
3.2数据库设计
3.2.1合理设计表结构
3.2.2合理创建索引(主键索引,唯一索引,普通索引,全文索引,空间索引)
3.2.3分表(水平分割,垂直分割)
3.2.4优化配置(my.ini)
3.2.5优化sql语句
3.2.6存储过程,触发器
3.2.7硬件
本文为看恩吧原创文章,转载无需和我联系,但请注明来自knsay.com