top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
ping 测试主机是否存活
arp 负责将ip地址解析成mac地址
tracepath 路由跟踪
使用场景,当你的网络出现问题的时候,一般运营商会要你提供一份路由跟踪的表 就是用这个命令来实现
CPU
iftop 查看网卡流量使用 不能查询具体的应用程序使用了多少流量
nethogs 查看进程使用了具体的流量 可以查出程序的PID
用法 nethogs eth0(如果外网流量大就填外网,如果内网流量大就填内网)
通过pid使用 ps axu 和lsof查出进程 以及程序文件里面什么问题造成的
凌晨三点 有台机器的读写非常高 导致业务部正常
找出读写最高的进程出来 (pid)
查看IO占用情况
和netstat的功能一模一样,
但是当你服务器的socket连接数量非常大的时候,使用netstat就是浪费你的生命 ss最大的优势就是他比netstat快很多
网站访问量比较小,但是有个问题一直困扰着我们,就是was服务器隔一段时间就报线程挂起,时间有长有短,短的重启5分钟内就报。一般情况是:
1.开应用服务器——用户下载——报线程挂起——下载量下降——报线程N长时间没活动,超过was设置的阀值,释放掉。
2.开应用服务器——用户下载——报线程挂起——下载量继续或者上升,挂起线程越来越多——was自动调整线程阀值——调不过来,挂。
经过查找,基本确定问题:是因为用户在用浏览器下载文件时,网络瞬断或其他原因,导致抛出异常,但是下载的线程并未释放。可打开浏览器下载,下到一半直接关掉浏览器来模拟这个现象。
byte[] b = new byte[1024]
...
while ((len = in.read(b)) != -1) {
out.write(b, 0, len)
}
...
登录后复制
修改为
byte[] b = new byte[1024]
...
while ((len = in.read(b)) != -1) {
Thread.sleep(50)
Thread.yield()
out.write(b, 0, len)
}
...
登录后复制
一些人建议的方法是,在服务器端给线程做个时间限制,超过时间的就关掉;但是这样做,较低网速下载大文件的用户,又会受到影响。因此用上面的做法是:线程处理一段时间,停一会,让出CPU控制权,不至于造成堵塞。
这个方法可能不是最好的,但是至少是比较合适的,现在服务器上线程挂起的现象已经大大减少,并且额外加了一句
if (request.getHeader("Range") != null) {
ErrShow(request, response, "不支持多线程!")
return
}
登录后复制
这样避免掉用下载工具的多线程下载。
哪位有更优解,请提出来,一起讨论一下。
刚才看到用守护线程来处理超时线程的解决方案,但另外一个技术主管极力反对,哪位能解释一下,为什么不可用?守护线程在什么情况下可用?谢谢
解决方法:
对于服务器频繁出现宕机情况就要注意了检查服务器是否存在负载量过大,服务器散热存在问题等等情况。再针对这样的情况一项一项来解决,这样才能保证服务器尽可能长时间正常运行。
对于一般服务器宕机,我们可以采用重启服务器的方式来解决。正常重启服务器可以清除内存碎片,重新优化应用软件,中断无用的端口,缓解CPU压力,加快服务器运行速度等等。
对于服务器租用用户来说,服务器宕机是非常值得重视的问题,如果租用的服务器经常出现宕机情况的话,一定要及时通知服务商,让服务器查明具体情况,问题过于严重甚至可以要求跟换服务器或者更换服务器供应商。
服务器简介:
服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。
服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。
相对于普通PC来说,服务器在稳定性、安全性、性能等方面都要求更高,因此CPU、芯片组、内存、磁盘系统、网络等硬件和普通计算机有所不同,在质量与处理器数据性能上更出色。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)