網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
周末休息的時(shí)候,經(jīng)理突然發(fā)消息來(lái),說(shuō)服務(wù)器崩了,馬上打開(kāi)網(wǎng)站查看,發(fā)現(xiàn)部分接口請(qǐng)求的時(shí)候,nginx報(bào)502錯(cuò)誤。登上服務(wù)器,查看了nginx錯(cuò)誤日志,發(fā)現(xiàn)了大量的異常。
no live upstreams while connecting to upstream
?Only one usage of each socket address (protocol/network address/port) is normally permitted) while connecting to upstream
?起初以為是nginx的配置問(wèn)題,百度了許久,修改了proxy_buffer_size,proxy_buffers 參數(shù),加大了緩存,502問(wèn)題好像消失了。跟經(jīng)理說(shuō)問(wèn)題解決了,是配置問(wèn)題。
。。。
沒(méi)想到第二天一早起床,打開(kāi)微信一看,一堆消息,說(shuō)服務(wù)器又崩了,和昨天的問(wèn)題一樣,早餐都沒(méi)吃,趕緊跑去公司。
再次檢查nginx錯(cuò)誤日志,發(fā)現(xiàn)了一個(gè)錯(cuò)誤記錄
?[crit] 31144#87716: *15013 connect() to [::1]:9008 failed (10055: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full) while connecting to upstream
?是說(shuō)系統(tǒng)缺少足夠的緩沖區(qū)空間或隊(duì)列已滿,該不會(huì)是太多連接到nginx了吧,覺(jué)得有可能是websocket長(zhǎng)連接的問(wèn)題,于是把websocket連接暫時(shí)關(guān)閉,worker_connections參數(shù)調(diào)大,發(fā)現(xiàn)接口變正常了,沒(méi)有502了。于是跟經(jīng)理信誓旦旦保證,問(wèn)題已經(jīng)解決了。
沒(méi)想到第三天還是出現(xiàn)了問(wèn)題,再不解決就要提桶跑路了。
其實(shí)這里我進(jìn)入了一個(gè)誤區(qū),因?yàn)榻涌诜祷氐氖莕ginx502,以為是nginx的問(wèn)題,后來(lái),在tomcat的錯(cuò)誤日志里,發(fā)現(xiàn)了這個(gè)問(wèn)題
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect
這里已經(jīng)很明顯了,是tcp連接數(shù)的問(wèn)題,連接數(shù)滿了,無(wú)法再建立連接了
服務(wù)器使用的是 windows serve 2012R2
使用命令 netsh interface ipv4 show dynamicportrange tcp 查看了端口數(shù)發(fā)現(xiàn)只開(kāi)放了少量端口
只需要打開(kāi)注冊(cè)表,新增兩個(gè)參數(shù)
找到 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 目錄下
新增?MaxUserPort (默認(rèn)可用端口) 值為 65534
新增?TcpTimedWaitDelay? (tcp恢復(fù)時(shí)間)值為 30
我這里修改了注冊(cè)表后,并不需要重啟。
然后再次輸入命令?netsh interface ipv4 show dynamicportrange tcp
發(fā)現(xiàn)端口數(shù)改變了。
。。
目前已經(jīng)觀察了半個(gè)月,并沒(méi)有發(fā)現(xiàn)出現(xiàn)502錯(cuò)誤了。
原文鏈接:https://blog.csdn.net/weixin_47561225/article/details/127246781
相關(guān)推薦
- 2022-11-05 ios開(kāi)發(fā)?try-catch引起的野指針問(wèn)題排查_(kāi)IOS
- 2022-03-15 跨域報(bào)錯(cuò):Response to preflight request doesn‘t pass ac
- 2022-04-18 antd4.*表格 Each child in a list should have a uniqu
- 2023-07-14 431報(bào)錯(cuò)和解決方法
- 2022-11-16 通用?HTTP?簽名組件的另類實(shí)現(xiàn)方式_實(shí)用技巧
- 2022-11-17 Go語(yǔ)言學(xué)習(xí)教程之反射的示例詳解_Golang
- 2022-12-24 Docker網(wǎng)絡(luò)模型以及容器通信詳解續(xù)篇_docker
- 2022-04-05 詳解C#如何實(shí)現(xiàn)讀寫(xiě)ini文件_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支