转载:https://www.javatang.com/archives/2020/08/11/22403140.html

降低Nginx的error级别并排除错误

然后打开nginx的error.log文件,发现没有特别的错误信息,打开nginx.conf文件,将 error_log的级别设置为notice(默认是error),运行了一会儿发现出现下面的warn错误:

an upstream response is buffered to a temporary file /tmp/xxx while reading upstream

主要的原因在于upstream请求HTTP头内容太大,大小超过了Nginx所设置的反向代理(proxy)的buffer值,只能写入到磁盘,所造成的结果就是某个请求会比较缓慢或者中断,比如图片经常无法显示,刷新之后又正常了等等。
关于Nginx的proxy buffer在proxy_buffering中有详细的说明:

When buffering is enabled, nginx receives a response from the proxied server as soon as possible, saving it into the buffers set by the proxy_buffer_size and proxy_buffers directives. If the whole response does not fit into memory, a part of it can be saved to a temporary file on the disk. Writing to temporary files is controlled by the proxy_max_temp_file_size and proxy_temp_file_write_size directives.

When buffering is disabled, the response is passed to a client synchronously, immediately as it is received. nginx will not try to read the whole response from the proxied server. The maximum size of the data that nginx can receive from the server at a time is set by the proxy_buffer_size directive.

也就是说proxy buffer由proxy_buffering 控制是否开启(默认开启),然后buffer的值由proxy_buffer_sizeproxy_buffers进行设置,如果整个请求超过buffer,超出的部分会写入到temporary file设置的文件中,写入临时文件的操作由proxy_max_temp_file_sizeproxy_temp_file_write_size进行设置。

proxy_buffer_size用来设置后端HTTP头响应的缓冲区的大小,proxy_buffers用来设置后端数据缓冲区大小,后面包含两个参数:number和size,开辟指定number个长度为size大小read_buf用来存储body,并非连接初始化的时候开辟number个,而是当buf不够存响应body时新申请,最多申请number个。除此之外,还有一个proxy_busy_buffers_size参数,该参数用于设置高负荷下缓冲大小,即当后端响应没有完全读取完毕之前,可以优先发送给客户端的缓存大小,其值是proxy_buffers和proxy_buffer_size的一部分,通常设置为proxy_buffer_size的两倍。
综合以上的说明并根据服务器实际的情况,将上述参数的值设置如下:

proxy_buffering on;
proxy_buffer_size        512k;
proxy_buffers            64 512k;
proxy_busy_buffers_size 1m;

经过以上设置之后,error.log中不再出现上述错误,也没有发现其他的错误。虽然客户方感觉有一些改变,但偶尔依然会有卡顿的情况。

修改Linux内核设置

记得在Resin服务器出现大量的ESTABLISHED和TIME_WAIT连接造成响应缓慢这篇文章中,为了减少TIME_WAIT的数量,将net.ipv4.tcp_tw_reusenet.ipv4.tcp_tw_recycle参数都设置成了1,这两个参数的含义如下:

  • tcp_tw_recycle:该参数用于回收TIME_WAIT连接,但是存在一个陷阱:当多个客户端通过NAT方式联网并与服务端交互时,服务端看到的是同一个IP,也就是说对服务端而言这些客户端实际上等同于一个,可惜由于这些客户端的时间戳可能存在差异,于是乎从服务端的视角看,便可能出现时间戳错乱的现象,进而直接导致时间戳小的数据包被丢弃。正式因如此,Linux从4.12内核之后移除了这个参数。
  • tcp_tw_reuse:顾名思义就是复用TIME_WAIT连接。当创建新连接的时候,如果可能的话会考虑复用相应的TIME_WAIT连接。通常认为tcp_tw_reusetcp_tw_recycle安全一些,这是因为一来TIME_WAIT创建时间必须超过一秒才可能会被复用;二来只有连接的时间戳是递增的时候才会被复用。

通常情况下,客户方都是使用NAT方式联网访问系统的,如果将这两个参数都打开的话会出现误判的情况,因此需要打开/etc/sysctl.conf文件,将以下三个参数都设置为0:

net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 0

保存退出,然后执行sysctl -p命令生效。注意:一定要将上面三个参数的值设置为0,而不是将原来的设置注释掉,那样是无法生效的。

这样设置之后,问题得到完美解决。

Nginx访问间歇性卡顿的解决办法相关推荐

  1. win11间歇性卡顿怎么办 windows11间歇性卡顿的解决方法

    Win11间歇性卡顿怎么解决?现在很多用户都安装了Win11系统了,最近有用户反映,在使用Win11系统的时候经常会遇到间接性卡顿的情况,这个该如何解决呢?下面小编就为大家带来完美的解决方法介绍!更多 ...

  2. sublime text3使用卡顿,代码提示卡顿终极解决办法

    sublime text3使用卡顿,代码提示卡顿终极解决办法 适用的情况 解决办法 适用的情况 原来sublime text3好好地不卡顿,突然有一天卡顿了. 应该是最近装了什么插件导致的 解决办法 ...

  3. Word 域嵌套太深弹窗,更新域卡顿,解决办法

    1.问题描述 用Word编辑几百页或者上千页的文档时,因为资料来源和拷贝的关系,总会遇到各种有问题的文档块,一般更新目录页码或者题注序号时,最快的操作就是CTRL+A,然后F9,但是偶尔会遇到这样的文 ...

  4. Windows 7以上客户端远程低版本服务器系统桌面卡顿的解决办法

    转载源:http://blog.sina.com.cn/s/blog_5f876ca30102vf5q.html 注:笔者办公时,有时需要登录公司设的远程系统,该远程是Windows XP系统,笔者的 ...

  5. office2016/2019版本打开时出现卡顿的解决办法

    1.解决方法: 将电脑里的打印机设置为虚拟打印机即可,即不要设置为平时使用的打印机设备.具体看下图: 2.过程: 说明:本人电脑华为matebook x pro,8代i5的U+8G内存+512固态,配 ...

  6. windows10玩游戏卡顿的解决办法

    问题:同样的配置,玩游戏会出现一个卡顿厉害,另外一个流畅运行的结果. 解决:windows10里面有个"游戏录制"预设应用关闭即可,具体"设置-游戏DVR-关闭" ...

  7. kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法

    文章作者Hao4K用户@nothero 自从买了这个索尼9500g,三天两头的出问题,而且还经常重启,经常卡顿.大法的画质确实不错,但是这系统稳定性实在是不敢恭维... 最近装了一个KODI-PLEX ...

  8. 电脑win10进入设置就闪退卡顿,解决办法:

    win键,右击设置,更多,应用设置,重置 网上看了很多办法,都不管用,lj百度

  9. Mac电脑卡顿的解决办法

    第一步: 打开任务管理器,看看电脑哪些应用在运行,占用ctrl+alt+esc (没啥用) 第二步: 打开活动监视器,(启动台--其他--活动监测器),可以看到耗CPU,内存的具体应用都有哪些. 如果 ...

  10. winform窗体控件多,加载慢、卡顿的解决办法

    protected override CreateParams CreateParams{get{CreateParams cp = base.CreateParams;cp.ExStyle |= 0 ...

最新文章

  1. 拉格朗日乘子法(Lagrange Multiplier)和KKT条件
  2. 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
  3. 学好python薪水有多少笔画_Python学到什么程度可以面试工作?
  4. 自动运维_无Agent自动化运维平台spug
  5. [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑设备10327k1
  6. 中国移动游戏趋势洞察报告
  7. 公约数和公倍数(Python)
  8. winform 显示分隔控件_Winform分页控件之纯分页显示处理
  9. Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun { cv.imread()的使用)}错误解决方案
  10. [附源码]计算机毕业设计Python+uniapp智能公交查询APP59sm2(程序+lw+APP+远程部署)
  11. DLM 通讯初始化语句
  12. 中国智能手机市场大幅衰退,仅华为vivo取得增长
  13. Jenkins基础:使用NPM构建前端应用1: nodejs插件的安装与设定
  14. 【项目篇-资料获取】怎么获取创新创业比赛资料、优秀作品?如何去借鉴?
  15. 吴恩达深度学习第一课第三周编程作业(上)
  16. 阿里云1+X-云计算开发与运维-中级(判断题)
  17. 教你怎么去辨别电脑配置的好或坏
  18. 12个Java长久占居主要地位的原因
  19. 新浪企业邮箱服务器怎么设置,新浪企业邮箱|客户端使用
  20. 小学计算机教案六年级冀教版,清华大学出版社版小学六年级下册信息技术全册教案.doc...

热门文章

  1. PageOffice常用功能之-OA系统中的文档在线编辑及流转
  2. 阿里云建站百度收录吗?
  3. 帝国php改密码后登录不进去,帝国cms后台不能登录的解决方法
  4. java编写平行四边形的代码_Java代码编写四边形
  5. QT for Android 修改图标与名称
  6. 井字棋(棋子可消去(拿走))
  7. 2012湘潭ICPC邀请赛感悟
  8. 京东充值系统现漏洞 被恶意盗刷
  9. CSDN余额充值协议
  10. 高通---IGV:从安装到使用