Java web应用性能分析之服务端慢[网络慢]

   日期:2024-12-25     作者:ira0v       评论:0    移动:http://w.yusign.com/mobile/news/3443.html
核心提示:        Java web应用性能分析之服务端慢,如果是网络原因引起的服务端慢,经常会被忽略,很多时候我们第

        Java web应用性能分析之服务端慢,如果是网络原因引起的服务端慢,经常会被忽略,很多时候我们第一时间不会去排查网络原因。出现这种情况也很正常,因为应用的外部网络都是超100M的大宽带服务器,而内部则是千兆网卡或者万兆网卡;一般网络上不会出现性能瓶颈。

        一般我们说的100M带宽,是指上行下行速度100Mbit/s=12.5MByte/s。但是对于家庭而言100M带宽是指下载速度理论值12.5MB(一般是10MB左右,上传速度1MB。

        服务器带宽不足会导致网络拥堵,web应用访问变慢,以及访问报错(408 request timeout,504 gateway timeout,影响客户体验,最终会导致潜在客户流失。

        服务器网络慢的原因

1、网络基础设施限制

        我们需要了解什么是带宽,带宽是指网络中传输数据的能力,通常以每秒传输的比特数(bps)或每秒传输的数据量(Mbps)来衡量,云服务器的带宽受到网络基础设施的限制,包括物理线路、交换机、路由器等设备的质量和性能,这些设备的性能决定了网络传输数据的速度,从而影响到云服务器的带宽。

2、网络拥堵

        云服务器的带宽还可能受到网络拥堵的影响,在网络高峰期,如上下班时间、节假日等,大量的用户同时访问网络,导致网络拥堵,这时,云服务器的带宽可能会被大量用户占用,从而导致用户体验下降,为了解决这个问题,云服务提供商通常会在网络高峰期增加带宽投入,以保证用户的正常使用。

        鉴于前面提到的DDos攻击,一般可以采用被动防御方式,通过分析入口的nginx日志,筛选出访问频率高的ip,将其添加到iptables或者nginx黑名单。

        分析脚本:筛选日志中访问大于30次的ip (这个有点粗,还容易误伤,因为很多小区或者公司,会共用一个公网ip

 

        Nginx黑名单:不足的是需要重启Nginx才能生效

 

        推荐方法: limit_req_zon 限制请求数,limit_conn_zone 限制连接数,开通白名单(特定接口、特定页面只对部分IP开放,关闭慢连接(默认值都是60s client_body_timeout 5s;client_header_timeout 5s;)。

        Nginx限流来防止DDos攻击

 
3、服务商限制

        云服务器的带宽还可能受到服务商的限制,一些小型云服务提供商可能由于资金、技术等方面的限制,无法提供足够高的带宽,这就导致了用户在使用云服务器时,可能会遇到带宽不足的问题,在选择云服务提供商时,用户需要根据自己的需求选择合适的服务商。

4、应用程序优化

        云服务器的带宽也可能受到应用程序本身的优化程度的影响,如果应用程序没有进行有效的优化,可能会导致大量的资源浪费,从而降低云服务器的带宽,用户在使用云服务器时,需要关注应用程序的优化情况,以提高云服务器的带宽利用率。

        云服务器的带宽之所以会如此之低,主要是受到网络基础设施限制、网络拥堵、服务商限制以及应用程序优化等多方面因素的影响,为了解决这个问题,用户需要在选择云服务提供商时注意其资质和实力,同时关注应用程序的优化情况,用户还可以关注云服务商发布的关于带宽扩容、网络优化等相关信息,以便及时了解和应对带宽问题。

5、操作系统优化和程序优化

        通过netstat等命令查看服务器的TCP状态,以及建立连接最多的ip,重点关注连接数最多的ip,排查是否是网络攻击;如果是ddos攻击,服务器上会有很多SYN-RECEIVED状态的连接,可以把这些状态的ip都记录下来,写入黑名单。

        5.1服务器上有大量的time_wait状态的连接
        1.产生大量time_wait的原因

        主要原因是服务器没有做内核参数优化的话。

        在TIME_WAIT状态,客户端连接要等待一段长为2ML(Maximum Segment LIfe,报文段最大生存时间)的时间,才能完全关闭。MSL是TCP报文段在网络中的最大生存时间。
        TIME_WAIT状态存在的原因有两点

  • 可靠地终止TCP连接
  • 保证让迟来的TCP报文段有足够的时间被识别并丢弃
  1. 第一个原因:客户端需要停留在某个状态以处理重复收到的结束报文段(即向服务器发送确认报文段
  2. 第二个原因:一个TCP端口不能被同时打开多次(两次及以上,当一个TCP连接处于TIME_WAIT状态时,我们无法立即使用该连接占用着的端口来建立一个新连接。

        TIME_WAIT状态要持续2MSL时间的原因(MSL通常为2分钟,现实中常用30秒或者1分钟:能够确保网络上两个传输方向上尚未被接收到的、迟到的TCP报文段都已经消失(被中转路由器丢弃)。一个连接的新的化身可以在2MSL时间之后安全地建立,而绝对不会收到属于原来连接的应用程序数据。

        直接原因可以看下面的TCP网络状态图。对于基于TCP的HTTP协议,关闭TCP连接的是Server端,这样,Server端会进入TIME_WAIT状态,可想而知,对于访问量大的Web Server,会存在大量的TIME_WAIT状态,假如Server一秒钟接收1000个请求,那么就会积压240*1000=240000个TIME_WAIT的记录,维护这些状态给Server带来负担。当然现代操作系统都会用快速的查找算法来管理这些TIME_WAIT,所以对于新的 TCP连接请求,判断是否hit中一个TIME_WAIT不会太费时间,但是有这么多状态要维护总是不好。
HTTP协议1.1版规定default行为是Keep-Alive,也就是会重用TCP连接传输多个 request/response,一个主要原因就是发现了这个问题。

        LInux下MSL默认值是60秒,2ML即是120秒后回收TIME_WAIT的连接。

        2.解决time_wait

        修改操作系统的内核参数,让其快速回收和使用那些time_wait状态的连接。

 

        5.2服务器上有大量的close_wait状态的连接
        1.产生大量close_wait的原因

        如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在客户端发出fin关闭连接之后服务器程序自己没有进一步发出ACK信号。

        也就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直被程序占着。个人觉得这种情况,通过服务器内核参数也没办法解决,服务器对于程序抢占的资源没有主动回收的权利,除非终止程序运行。大概率是服务器上的进程非正常关闭。

        2.解决close_wait
 

TCP网络状态图

 
 

如何计算网站服务器的带宽。

 

当主机带宽不足时,是选择OSS还是CDN

 

下面是扯淡篇、无聊的时候可以看看。

        关于带宽扯点题外话,宽带费用。在云厂商出现前,我们的服务器都是托管在运营商机房(大厂自建机房除外,首选BGP机房,即互联网的骨干或者核心机房,亦或者是数据交换的中心枢纽(主干网)。因为只有BGP机房才会配备高性能服务器、路由器、交换机等网络设备,才能提供可靠的、稳定的网络服务和完善的网络安全防护措施。

        BGP机房的优势

1、可以提供高速的互联网接入,一般包含移动/联通/电信,多条线路,主流的运营商,使用户可以快速、稳定地访问互联网。

2、BGP机房提供了强大的网络安全防护措施,可以有效地防范各种网络攻击和恶意行为。

3、BGP机房还具备高度可靠性和可扩展性,可以适应不同规模和需求的网络流量。

        BGP机房的特点

1、BGP机房需要位于地理位置优越的地方,以确保网络连接的稳定和速度的可靠。

2、BGP机房应该具备优质的设备和先进的技术支持,以保证网络的高效运转和安全性。

        回到费用上,托管费用主要包括机位费和宽带费,机位费一般IDC数据中心1U为200元/月,2U 400元/月,4U 500元/月;100M独享宽带费是1200元/月。

服务器带宽多少合适

        带宽会影响服务器的访问速度,网络带宽的大小对于访问量较大的网站或者应用尤其重要。根据不同业务情况,选择合适的带宽(毕竟是钱啊,游戏开发、视频直播、APP开发、门户网站、电商平台等不同的业务场景对带宽需求不同。

        很多网站实际上使用的带宽并不多,1000人同时在线,占用的带宽不到5Mbit,假设网站是视频业务,进行估算。一部高清电影4GB,时长160分钟,则播放速度4GB/160min=4*1024MB/160/60=0.43MB/S=0.43*8Mbit/S=3.3Mbit;1000人同时看3.3Mbit*1000=4Gbit;这是服务器上的带宽要4Gbit,客户端只需要5Mbit带宽即可观看。

     本文地址:http://w.yusign.com/news/3443.html    述古往 http://w.yusign.com/static/ , 查看更多
 
标签: 带宽
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号