标签: tcp

Apache Tomcat 在 300 个连接后窒息

我们在 EC2 上托管的 Tomcat 前面有一个 apache 网络服务器,实例类型特大,内存为 34GB。

我们的应用程序处理大量外部网络服务,我们有一个非常糟糕的外部网络服务,在高峰时段需要将近 300 秒来响应请求。

在高峰时段,服务器只有大约 300 个 httpd 进程而窒息。ps -ef | grep httpd | wc -l =300

我在谷歌上搜索并发现了许多建议,但似乎没有任何效果..以下是我所做的一些配置,这些配置直接取自在线资源。

我在 apache 和 tomcat 中都增加了最大连接数和最大客户端数的限制。这是配置详细信息:

//阿帕奇

   <IfModule prefork.c>
    StartServers 100
    MinSpareServers 10
    MaxSpareServers 10
    ServerLimit 50000
    MaxClients 50000
    MaxRequestsPerChild 2000
    </IfModule>
Run Code Online (Sandbox Code Playgroud)

//tomcat

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="600000"
           redirectPort="8443"
           enableLookups="false" maxThreads="1500"
           compressableMimeType="text/html,text/xml,text/plain,text/css,application/x-javascript,text/vnd.wap.wml,text/vnd.wap.wmlscript,application/xhtml+xml,application/xml-dtd,application/xslt+xml"
           compression="on"/>
Run Code Online (Sandbox Code Playgroud)

//sysctl.conf

 net.ipv4.tcp_tw_reuse=1
 net.ipv4.tcp_tw_recycle=1
 fs.file-max = 5049800
 vm.min_free_kbytes = 204800
 vm.page-cluster = 20
 vm.swappiness = 90
 net.ipv4.tcp_rfc1337=1
 net.ipv4.tcp_max_orphans = 65536
 net.ipv4.ip_local_port_range = 5000 65000
 net.core.somaxconn …
Run Code Online (Sandbox Code Playgroud)

tomcat performance-tuning tcp apache-2.2

16
推荐指数
3
解决办法
6万
查看次数

如何直接通过 TCP 公开 UNIX 域套接字

我想要一个 UNIX 域套接字,例如 /var/program/program.cmd,通过 TCP 公开,比如说在端口 12345 上。我也希望它在后台全时运行。

做到这一点的最佳方法是什么?如果相关,则系统正在运行 Ubuntu 12.04.2。

同样使用建议的解决方案,它是否会在删除和重新创建域套接字后继续存在?

编辑

以下是 init 脚本形式的已接受答案的结果:https : //github.com/Wirehive/haproxy-remote

linux ubuntu tcp socket

16
推荐指数
1
解决办法
2万
查看次数

查找短期 TCP 连接所有者进程

tcpdump在与 apache 服务器的本地连接上运行时,我发现 TCP 连接每 2 秒立即建立并关闭一次。我如何找到哪个进程负责这些?netstat -ctp没有帮助,连接速度太快,并且没有为 TIME_WAIT 显示进程标识符。

结果证明它们是 haproxy 探针,我可以用 验证strace,但我仍然不知道有什么方法可以首先确定 haproxy。

monitoring connection tcp

15
推荐指数
1
解决办法
1万
查看次数

将防火墙规则减少一半 - tcp 和 udp 的 iptables 规则

我的防火墙上有许多 iptables 规则,如下所示:

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

对于每个地址,是否有两个规则的快捷方式 - 一个用于 tcp,一个用于 udp?我的意思是我可以做这样的事情:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

firewall iptables tcp udp

15
推荐指数
1
解决办法
4万
查看次数

为什么有些连接超时而其他连接被拒绝?

我注意到有时在尝试在某个随机端口进行 telnet 时,我观察到两种情况:

$ telnet example.com 3432
  Trying 173.252.110.27...

$ telnet example.com 3432
  Connection Refused.
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这两者有什么区别吗?

networking tcp

15
推荐指数
1
解决办法
2万
查看次数

net.core.rmem_max 和 net.ipv4.tcp_rmem 的区别

net.core.rmem_max 和 net.ipv4.tcp_rmem 的第三个值有什么区别?哪个对 tcp 连接具有更高的优先级?

对于以下两个示例,tcp 连接的最大缓冲区是多少?

Case 1:
sysctl -w net.core.rmem_max=7388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608'

Case 2:
sysctl -w net.core.rmem_max=8388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'
Run Code Online (Sandbox Code Playgroud)

linux tcp linux-networking linux-kernel

15
推荐指数
1
解决办法
2万
查看次数

在 HTTP2 下,新的 TCP 连接多久发起一次?

我知道 HTTP2 旨在将所有内容保持在单个 TCP 连接下,我想知道 TCP 连接多久会被断开。

例如,如果我访问 youtube,进行一些浏览,离开站点,然后返回,我会重新使用相同的 HTTPS 连接(就 TCP 4 元组而言,不是会话),还是不同的连接?

其中很多可能是特定于应用程序的,取决于浏览器如何实现它,但它是否在标准中的任何地方指定?

http https tcp

15
推荐指数
1
解决办法
685
查看次数

如何在 Wireshark 中搜索信息列?

线鲨 | 视窗

我想搜索特定地址/消息的 SMTP 流量的数据包捕获。通常,我只是对信息列进行排序并浏览,但如果我可以对我正在寻找的特定字符串运行搜索或过滤器,那就太好了。

有没有办法在 Wireshark 中做到这一点?

tcp packet-analyzer wireshark packet-capture

14
推荐指数
1
解决办法
4万
查看次数

如何调整初始 TCP 重传超时?

3s 的初始 TCP RTO 值对于大多数基于 LAN 的应用程序来说太长了。我怎样才能调低?有sysctl吗?

linux tcp linux-kernel

14
推荐指数
3
解决办法
2万
查看次数

我对计算 MTU 有什么误解?

好的,我刚刚解决了几个 Xserve、Netgear GSM7224 和 Drobo B800i 之间的巨型帧问题。事实证明,Xserves(Mac OS X 10.6.8 服务器)和 Drobo B800i 接受 MTU(以字节为单位)正常预期(1500-9000),但 Netgear 似乎希望它包括各种以太网页眉/页脚(拖车) 我最终得到了 Xserves & Drobo 的 MTU 配置为 9000 和 Netgear 端口设置为 9216 的 MTU。

我使用以下命令通过 Netgear 测试和验证两个 Xserve 之间的 MTU(注意:这些是 Mac OS X 命令,Windows 和 Linux 的命令不同):

ping -D -s <mtu> <ip_address>

traceroute -F <ip_address> <mtu>
Run Code Online (Sandbox Code Playgroud)

前者的用法man页面中注明为“指定要发送的数据字节数。默认为56,当与8字节的ICMP头数据组合时,转换为64个ICMP数据字节”。在测试中,我发现ping -D 1472 <ip_address>由于 8 字节的 ICMP 标头数据加上 20 字节的 IP 标头(请参阅),to相当于 MTU 1500 。这一切都说得通。

现在,为什么是 9000 …

tcpip ethernet tcp gigabit-ethernet mtu

14
推荐指数
1
解决办法
4866
查看次数