高性能网站请求量大应该如何支撑?大体可以分为两个方面。一方面是尽量减少对服务器的请求,另一方面是提高服务器的相应能力。对于减少服务器的请求能力,小编这里列举以下几个方面,大家可以参考。
1:对于开发人员,尽量做到能够合并css, 把多张背景图片合并, 减少mysql查询等。
2: 对于运维人员, nginx的expires 设置,利用浏览器缓存等,减少查询。
3: 利用第三方的cdn来响应请求,以此来减少自身服务器的压力。
4: 最终剩下的,不可避免的请求----服务器集群+负载均衡来支撑。
所以,来到第4步后,就不要再考虑减少请求这个方向了.而是思考如何更好的响应高并发请求。那么这也是我们今天着重要讲的。
对于Nginx来说,客户来请求Nginx 来响应,怎么响应,无非是读取mysql 或者是直接读取磁盘上的index.html 等等。两个方向,第一是要建socket 连接,第二是要打开文件。这就牵扯到两个硬性的限制。第一,你的socket 连接能不能建那么多。你的内存是不是足够大,因为建立socket 连接都要内存维护着他们的信息的。你打开文件,操作系统允许不允许你一次打开那么多的文件。因为在默认情况下一个进程同时只能打开1024个文件。所以你想建立高并发,高并发无非就是建立的socket 连接多,打开的文件多。只有你这两个方面能承的住。当然对你的网卡也是有要求的,起码你的网卡能够同时跑通那么多的流量。
知道了这两个大的方向之后,我们排查问题就需要从这两点入手。然后通过观察系统的dmesg 和 nginx 的error.log 来逐步解决问题。其实在真实的生产环境里面,做东西都是哪里出错了,跟着错误轨迹一点点去摸索的优化的。没有一个固定的路子说照着什么做就能达到多大的并发。
以上就是架构一个高并发 Nginx 服务器的大体思路和方案,希望对大家有所帮助。