AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 784140
Accepted
cardinal-gray
cardinal-gray
Asked: 2016-06-16 06:49:35 +0800 CST2016-06-16 06:49:35 +0800 CST 2016-06-16 06:49:35 +0800 CST

执行“nginx reload”时 nginx 无响应

  • 772

在重新加载 nginx 时,我开始在消息日志中收到错误消息“端口 443 上可能出现 SYN 泛滥”,并且当时 nginx 似乎变得完全无响应(相当长一段时间),导致 zabbix 报告“nginx is down”,ping 0s。当时的RPS大约是1800。

但是,服务器在其他非 Web 端口(SSH 等)上保持响应

我应该在哪里查看以及应该显示哪些配置(sysctl、nginx)才能找到其根本原因。

提前致谢。

升级版:

一些附加信息:

$ netstat -tpn |awk '/nginx/{print $6,$7}' |sort |uniq -c
   3266 ESTABLISHED 31253/nginx
   3289 ESTABLISHED 31254/nginx
   3265 ESTABLISHED 31255/nginx
   3186 ESTABLISHED 31256/nginx

nginx.conf 示例:

worker_processes  4;
timer_resolution 100ms;
worker_priority -15;
worker_rlimit_nofile 200000;

events {
  worker_connections  65536;
  multi_accept on;
  use epoll;
}

http {

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_requests 100;
  keepalive_timeout  65;

}

自定义 sysctl.conf

net.ipv4.ip_local_port_range=1024 65535
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.core.netdev_max_backlog=10000
net.ipv4.tcp_syncookies=0
net.ipv4.tcp_max_syn_backlog=20480
net.ipv4.tcp_synack_retries=2
net.ipv4.tcp_syn_retries=2
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.netfilter.nf_conntrack_max=1048576
net.ipv4.tcp_congestion_control=htcp
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=0
net.ipv4.tcp_max_tw_buckets=1400000
net.core.somaxconn=250000
net.ipv4.tcp_keepalive_time=900
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_fin_timeout=10

UPD2

在大约 1800 RPS 的正常负载下,当我在 80 和 443 端口上将 nginx 上的积压设置为 10000,然后重新加载 nginx 时,它变成使用更多 RAM(使用了我的 4GB 实例中的 3.8Gb,并且一些工人被 OOM 杀死-killer),并且 worker_priority 在 -15 负载超过 6(而我的实例只有 4 个核心)。因此,该实例非常滞后,我将 worker_priority 设置为 -5,并将每个端口的 backlog 设置为 1000。目前,它使用较少的内存,峰值负载为 3.8,但是,nginx 在重新加载后仍然会在一两分钟内无响应。所以,问题依然存在。

一些netstat详细信息:

netstat -tpn |awk '/:80/||/:443/{print $6}' |sort |uniq -c
      6 CLOSE_WAIT
     14 CLOSING
  17192 ESTABLISHED
    350 FIN_WAIT1
   1040 FIN_WAIT2
    216 LAST_ACK
    338 SYN_RECV
  52541 TIME_WAIT
linux nginx tcpip netstat sysctl
  • 1 1 个回答
  • 236 Views

1 个回答

  • Voted
  1. Best Answer
    evilBunny
    2016-06-22T04:52:38+08:002016-06-22T04:52:38+08:00

    如果你有:

      keepalive_timeout  65;
    

    我可以想象连接终止和工作人员重新启动可能需要一段时间。如果 nginx 正在等待它们在重新加载后过期,我不太确定如果不查看代码。

    您可以尝试降低该值,看看是否有帮助。

    • 0

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 如何在 Windows Server PPTP VPN 中自动为客户端分配路由?

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve