Nginx出现10055错误问题

Nginx在配置后遇到了socket问题:

[alert] 3336#3636: select() failed (10055: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full)

查了一些资料也不能确定问题的原因,只能尝试修改一些参数配置:

proxy_buffering    on;          #开启从后端被代理服务器的响应内容缓冲
proxy_buffer_size  4k;          #设置从后端被代理服务器的响应内容缓冲区大小
proxy_buffers    8 1M;         #设置从被代理的后端服务器取得的响应内容缓冲区的大小和数量
proxy_busy_buffers_size  2M;       #高负荷下缓冲大小(proxy_buffers*2)
proxy_max_temp_file_size    0;     #当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M
                       #它与 proxy_cache 没有关系。大于这个值,将从upstream服务器传回。设置为0禁用。

因为Nginx配置再windows server2008上,为了保险起见,设置了注册表中的两个值:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters  注册表子键并创建名为TcpTimedWaitDelay 的新 REG_DWORD 值 建议值:最小值为 0x1E,它将等待时间设置为 30 秒
描述:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。
此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。
减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters   注册表子键并创建名为 MaxUserPort 的新 REG_DWORD 值
描述:确定在应用程序从系统请求可用用户端口时,TCP/IP 可指定的最高端口号
MaxUserPort 的新 REG_DWORD 值。 停止并重新启动系统。 缺省值:无 建议值:至少十进制 32768。
注:当在 Windows NT 或 Windows 2000 操作系统上调整 WebSphere Application Server 时,同时使用这两个参数。

最后还调整了系统磁盘的虚拟内存

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注