我有一个在JVM上运行相当高流量(20K req / min)的应用程序,在Ubuntu上有一个Jetty servlet容器。下面是我的Jetty配置:
10 20 2000 2
当我分析网络流量时,我意识到有时需要很长时间才能在Jetty运行的端口上建立TCP连接。长连接在3.0s和9.0s之间变化。端口配置为接受MAX个TCP连接。你知道什么可能导致接受连接的延迟吗?
由于
答案 0 :(得分:2)
不幸的是,你没有提供更多的技术背景。
我假设你面临一个非常高的系统负载,因为连接建立了backlog(监听系统调用[ServerSocket]的参数)足够高。
接受连接总是涉及切换到内核模式,这可能会导致高系统负载,并且只能通过扩展应用程序(使用负载平衡)来解决,即您需要更大的机器或更多的机器。
答案 1 :(得分:2)
我相信你正在使用“按请求连接”模式。如果是这样,请尝试查看以下内容:
内核/应用程序调优可能有所帮助,但在20K / min => 330 TPS我会说你必须看看不同的架构解决方案,而不仅仅是调整。建立TCP连接是一项非常繁重的操作,涉及内核机制,因此涉及上下文切换。