php网站 高并发时候如何优化?

利器1.多线程处理

利用线程池设计,同时处理多个请求。
线程池中线程个数=CPU个数+1;//对计算密集型的情况适用
如果程序的逻辑处理需要对 DB,IO,redis 有操作。会增加CPU的占用率。


高并发解决方案案例:

当QPS达到2000时
优化方案: 做业务分离,分布式存储

1.流量优化  

防盗链处理(去除恶意请求)、限流、限速、限制并发数


2.前端优化
(1) 减少HTTP请求[将css,js等合并]
(2) 添加异步请求(先不将所有数据都展示给用户,用户触发某个事件,才会异步请求数据)
(3) 启用浏览器缓存和文件压缩
(4) CDN加速
(5) 建立独立的图片服务器(减少I/O)


3. 服务端优化

(1) 页面静态化
(2) 并发处理
(3) 队列处理

4.数据库优化
(1) 数据库缓存
(2) 分库分表,分区
(3) 读写分离
(4) 负载均衡

5.web服务器优化
(1) nginx反向代理实现负载均衡

(2) lvs实现负载均衡

6.使用集群和分布式 

集群和分布式处理都是使用多台服务器进行处理的,集群是每台服务器都具有相同的功能,处理请求时调用哪台服务器都可以,主要起分流的作用,分布式是将不同的业务放到不同的服务器中,处理一个请求可能需要用到多台服务器,这样就可以提高一个请求的处理速度,而且集群和分布式也可以同时使用。

Session同步有两种处理方式:一种是在Session发生变化后自动同步到其他服务器,另外一种方式是用一个程序统一管理Session。所有集群的服务器都使用同一个Session,Tomcat默认使用的就是第一种方式,通过简单的配置就可以实现,第二种方式可以使用专门的缓存程序来管理缓存如Memcached、Redis等。

7.反向代理服务器可以和实际处理请求的服务器在同一台主机上,而且一台反向代理服务器也可以访问多台实际处理请求的服务器。反向代理服务器主要有三个作用: 
①可以作为前端服务器跟实际处理请求的服务器(如Tomcat)集成; 
②可以用做负载均衡; 
③转发请求,比如,可以将不同类型的资源请求转发到不同的服务器去处理,可以将动态资源转发到Tomcat、Php等动态程序而将图片等静态资源的请求转发到静态资源的服务器,另外也可以在url地址结构发生变化后将新地址转发到原来的旧地址上。

海量数据的解决方案:

  • 缓存
  • 页面静态化
  • 数据库优化
  • 分离活跃数据
  • 批量读取和延迟修改
  • 读写分离
  • 分布式数据库
  • NoSQL和Hadoop

高并发的解决方案:

  • 应用和静态资源分离
  • 页面缓存
  • 集群与分布式
  • 反向代理
  • CDN
  • 底层的优化

猜你喜欢

转载自blog.csdn.net/ahjxhy2010/article/details/80022217