• nginx比apache处理静态文件速度快,但是nginx处理大量并发的php请求时,容易出现502错误,频率大概是多少


    首先要明确一点的是502是怎么出现的,为什么会出现502呢?

    一般而言,出现502的错误是因为php-cgi连接数不够导致的。
    举个例子:
    php-cgi开10个进程,前端发20个请求,每个请求的脚本都sleep100s,那么必然有至多10个请求会出现502错误。因此,出现502是因为php进程不够用了,和nginx没有多大关系。

    如果非要是找出这种502错误的比例,需要综合考虑:
    1后端php-cgi的进程数,
    2php-cgi对请求的处理时间,
    3nginx的并发量,
    要解决502也很容易,加大php-cgi的进程数。这里又三种方式:
    1增加nginx的upstream,其中upstream中为php-cgi的地址;
    2利用nginx作为反向代理,分支法解决并发量;
    3增加php-cgi的进程数,(这里会受到机器资源的限制,因此,也并不能无限增加)

    问:php-cgi怎么开十个进程?求回答,谢谢啊
     
    追答:目前而言,php-cgi都是通过php-fpm去管理的。
       在php/etc/php-fpm.conf文件中,有设置php进程数目的选项。

       项设置可以参考php-fpm.conf中的说明。每个配置项都有详细的说明。

    追问:开启apache就会在任务管理器中看到fast-cgi线程了?一个fast-cgi线程是说在同一时刻只能处理一个客户端的网页请求吗?求回答

     
    追答:是的,一个fast-cgi进程在同一时刻只能响应一个用户请求。其他的用户请求都会被放到一个队列里面。

    1、为什么Nginx的性能要比Apache高得多?

    1  这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
    2  处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
    3  假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。

    2、为什么会出现502错误呢?

    nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。优化php-fpm,优化代码,加大内存才是解决502的根源。

    3、10000并发的话,nginx的表现怎么样?

    2009年9月3日下午2:30,金山游戏《剑侠情缘网络版叁》临时维护1小时,大量玩家上官网,论坛、评论、客服等动态应用Nginx服务器集群,每台服务器的Nginx活动连接数达到2.8万。

  • 相关阅读:
    spring helloworld
    Log4cpp介绍及使用
    带有机器人框架的.NET自己主动化測试
    typedef和define具体的具体差别
    史上最简单的Hibernate入门简单介绍
    Linux安装程序Anaconda分析
    TinyXml高速入门(一)
    js获取并设置<p></p>的显示的值。
    Tomcat 配置WEB虚拟映射 及 配置虚拟主机
    Gitserver几家互联网代理安装方法未能解决。
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/9673417.html
Copyright © 2020-2023  润新知