首页 » Web前端 » nginxphp不缓存技巧_面试题为什么 Nginx 不该用多线程常见的优化手段有哪些

nginxphp不缓存技巧_面试题为什么 Nginx 不该用多线程常见的优化手段有哪些

访客 2024-12-07 0

扫一扫用手机浏览

文章目录 [+]

懂皮毛的人,一样平常会做个 Web Server,搭建一个 Web 站点;低级运维可能搞个 HTTPS 、配置一个反向代理; 中级运维定义个 upstream、写个正则判断;老鸟做个性能优化、写个ACL,还有可能改改源码(

异步,非壅塞,利用了epoll 和大量的底层代码优化。

如果一个server采取一个进程卖力一个request的办法,那么进程数便是并发数。
正常情形下,会有很多进程一贯在等待中。

nginxphp不缓存技巧_面试题为什么 Nginx 不该用多线程常见的优化手段有哪些

而nginx采取一个master进程,多个woker进程的模式。

nginxphp不缓存技巧_面试题为什么 Nginx 不该用多线程常见的优化手段有哪些
(图片来自网络侵删)
master进程紧张卖力网络、分发要求。
每当一个要求过来时,master就拉起一个worker进程卖力处理这个要求。
同时master进程也卖力监控woker的状态,担保高可靠性woker进程一样平常设置为跟cpu核心数同等。
nginx的woker进程在同一韶光可以处理的要求数只受内存限定,可以处理多个要求。

Nginx 的异步非壅塞事情办法正把当中的等待韶光利用起来了。
在须要等待的时候,这些进程就空闲出来待命了,因此表现为少数几个进程就办理了大量的并发问题。

每进来一个request,会有一个worker进程去处理。
但不是全程的处理,处理到什么程度呢?处理到可能发生壅塞的地方,比如向上游(后端)做事器转发request,并等待要求返回。
那么,这个处理的worker很聪明,他会在发送完要求后,注册一个事宜:“如果upstream返回了,见告我一声,我再接着干”。
于是他就安歇去了。
此时,如果再有request 进来,他就可以很快再按这种办法处理。
而一旦上游做事器返回了,就会触发这个事宜,worker才会来接手,这个request才会接着往下走。

为什么 Nginx 不该用多线程?

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,以是worker支持比perfork高的并发),并发过大会耗光做事器资源。

Nginx: 采取单线程来异步非壅塞处理要求(管理员可以配置Nginx主进程的事情进程的数量)(epoll),不会为每个要求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的高下文切换。
以是才使得Nginx支持更高的并发。

Nginx常见的优化配置有哪些?

1)调度worker_processes

指Nginx要天生的worker数量,最佳实践是每个CPU运行1个事情进程。

理解系统中的CPU核心数,输入

$ grep processor / proc / cpuinfo | wc -l

2)最大化worker_connections

Nginx Web做事器可以同时供应做事的客户端数。
与worker_processes结合利用时,得到每秒可以做事的最大客户端数

最大客户端数/秒=事情进程事情者连接数

为了最大化Nginx的全部潜力,应将事情者连接设置为核心一次可以运行的许可的最大进程数1024。

3)启用Gzip压缩

压缩文件大小,减少了客户端http的传输带宽,因此提高了页面加载速率

建议的gzip配置示例如下:( 在http部分内)

4)为静态文件启用缓存

为静态文件启用缓存,以减少带宽并提高性能,可以添加下面的命令,限定打算机缓存网页的静态文件:

location ~ .(jpg|jpeg|png|gif|ico|css|js)$ {

expires 365d;

}

5)Timeouts

keepalive连接减少了打开和关闭连接所需的CPU和网络开销,得到最佳性能须要调度的变量可参考:

6)禁用access_logs

访问日志记录,它记录每个nginx要求,因此花费了大量CPU资源,从而降落了nginx性能。

完备禁用访问日志记录

access_log off;

如果必须具有访问日志记录,则启用访问日志缓冲

access_log /var/log/nginx/access.log主缓冲区= 16k

502报错可能缘故原由有哪些?

1)FastCGI进程是否已经启动

2)FastCGI worker进程数是否不足

3)FastCGI实行韶光过长

4)FastCGI Buffer不足

nginx和apache一样,有前端缓冲限定,可以调度缓冲参数

fastcgi_buffer_size 32k;

fastcgi_buffers 8 32k;

5)Proxy Buffer不足

如果你用了Proxying,调度

proxy_buffer_size 16k;

proxy_buffers 4 16k;

6)php脚本实行韶光过长

将php-fpm.conf的<value name=\"大众request_terminate_timeout\公众>0s</value>的0s改成一个韶光

网站崩溃找不到缘故原由?平台搭建无从下手?热门技能不想后进?想要变强找不到资料?

加入[IT拯救同盟],让大牛和差错拯救你,带你装x带你飞。
定期干货分享、大牛专业解答、实用IT工具优选.....

私信小编“同盟”,即可加入我们~

标签:

相关文章

php中空值技巧_PHP常用数组进修笔记

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,...

Web前端 2024-12-09 阅读0 评论0