【大型网站优化】

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硬件

打赏

看恩吧
网站不承担任何有关评论的责任
  • 最新评论
  • 总共条评论
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦