`
- 浏览:
981494 次
-
java虚拟机内存查看相关命令:
http://donald-draper.iteye.com/blog/2358771
Linux系统和用户线程数进程数限制查询:
http://donald-draper.iteye.com/blog/2358761
Oracle性能查看:
http://donald-draper.iteye.com/blog/2358935
项目简介:主要是定时任务增量更新数据,定时任务每天跑一次,任务是中有一个线程池,管理着3个增量更新线程,1个全量更新线程;
事发及处理过程:
2017年02月23号,项目经理一声令下,哥屁颠屁颠地,跑了过去,服务器出问题了,日志从2017年01月27号之后,断了;这是怎么回事?让我去看看;哥的心,那忐忑的,七上八下;
到机房,看日志,日志到27号断了,用任务调试接口测试了一下发现定任务正常,有日志产生,哥就疑问了,那定时任务为什么不跑了呢?并且线程池中3个增量更新线程只有一个跑完,全量更新线程跑完,其他2个增量更新线程没跑完,很是疑问,线程池的问题吗?重启tomcat,调试任务,仍是上面的问题?(线程池中3个增量更新线程只有一个跑完,全量更新线程跑完,其他2个增量更新线程没跑完)
查看的线程池的源码,看起来不太可能是线程池出问题;那是什么情况?
再看日志发现1月18号之前,线程池中的4个线程全部跑完,但1月18号,日志显示有大量的数据更新,增量更新线程1跑完,增量线程2,跑了一部分,出现fush statement SQL异常;再查看18号以后的日志发现,增量更新线程1跑完,2,3没跑完,全量更新线程跑完;一直到27号,这又是什么原因呢?郁闷中,查看tomcat的Catalina日志发现18号发生out of memery 异常;堆空间不够用了,还是不能解决为什么定时任务跑到27号,就没了呢?
jmap -heap pid :查看堆内存,没问题够用,再调度任务,从日志来看老问题;
jmap -histo:live pid: 查看对象大小,没问题;
jstat -gcutil pid : 查看jvm的gc情况和内存使用情况,没问题;
jstack pid :查看jvm线程运行状态,是否有死锁现象等等信息,
看到定时任务调度器有10个线程,3个在跑,7个在等待;线程池中有两个在跑,状态为
从数据库Socket读取数据,没看明白真没回事;
23号晚上,睡觉的时候,突然来了灵感,1月18,1月27,10个调度线程;
为什么1月27调度任务不跑呢?
18号,堆内存异常,增量更新线程有一个执行完,一个执行更新中,另一状态不太清除;
27号定时任务不跑了,对了27-18+1=10;由于有2个增量更新线程一直没跑完,意味着有一个任务线程再跑,正好跑了10天,10个任务线程用完;
那又为什么还有2个增量线程没跑完呢?jstack查看线程运行状态,发现处于运行状态,Socket从数据库读取数据;难道是数据库性能问题,读写太慢,查看数据库性能,果然,重启了一下数据库;一切正常。
教训:
当服务器出问题时,首先保护现场,查看虚拟机状态(内存,GC,线程),分析发生时间点,前后日志的不同,即时间点日志。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在处理服务器操作时,一次意外的数据丢失事件发生了。一名技术人员在生产服务器上安装Oracle数据库的过程中,由于初次接触安装流程,在研究安装方法时遇到了不确定的情况。为了解决这个问题,她决定卸载已安装的部分...
- **描述**:本报告详细记录了一次IT故障事件的处理流程,包括事件的发生、影响范围、处理过程以及最终解决方案。旨在为IT团队提供故障处理的参考案例。 #### 二、事件详情 - **事件描述**: - **用户反馈**:...
本文将基于谷歌高级研究员Jeff Dean的一次演讲内容,深入探讨谷歌在构建大规模分布式系统中的设计思路、遇到的问题以及相应的解决方案。 #### 系统架构概述 在构建大规模分布式系统时,硬件基础设施的选择至关重要...
对于开发者,这是一次宝贵的教训,教会我们在编写代码时要重视安全性,避免类似的编程错误;对于用户,这是一个警示,提醒我们在日常使用中应时刻保持警惕,采取必要的安全措施。通过深入学习和分析这类漏洞,我们...
- **吸取教训,避免同类问题再次发生:** 对每一次故障排查进行总结和反思,以防止同样的问题在未来重演。 - **不断提高排查效率和准确性:** 通过持续改进排查流程和工具,可以提高故障排查的效率和准确性。 - **...
在互联网技术迅猛发展的今天,构建能够应对大规模用户流量及数据处理的分布式系统已成为诸多在线平台面临的挑战。本文将以社交网站MySpace的发展历程作为案例,通过对MySpace六次重大重构过程的分析,探讨分布式系统...
计算机毕业实习日记是计算机专业学生毕业前的一次实习体验,旨在提高学生的实践能力、工作经验和职业发展。本文档共八篇日记,涵盖了计算机毕业实习的各个方面,从初入公司到实习结束,记录了实习生的经历、收获和...
研究这些源代码可以帮助我们理解攻击者的思路,提高对网络安全的认识,并且对于开发者来说,这是一次宝贵的教训,能够了解如何预防和修复类似的漏洞。 首先,我们需要分析源代码中的深度学习模型是如何被集成到ASP...
标题中的“搜狗实验室技术交流文档 解决socket tcp C10K问题.zip”指的是一个关于如何处理C10K问题的文档合集,这个问题是网络编程中常见的挑战,特别是对于服务器设计者而言。C10K问题指的是一个服务器同时处理10,...
开发者可以回顾开发过程,总结经验教训,为未来项目提供参考。 总之,这个网上考试系统是一个全面展示J2SE技术的平台,涵盖了网络编程、数据库交互和用户界面设计等多个方面。通过实际操作和不断优化,开发者可以...
当我还是一名刚刚毕业的学生时,我第一次在国家太阳观察站(National SSolar Observatory)接触到了如今版本控制系统的鼻祖 —— SCCS。今天,已经出现了数不胜数的版本控制系统,而 SCCS 也早已被更强大的产品所...
在实现过程中,开发者需要创建服务器端和客户端应用程序,分别处理连接请求、接收和发送数据。服务器端负责管理连接的客户端,并转发消息,而客户端则用于用户交互,发送和接收聊天内容。 点对点聊天室的特性意味着...
当我还是一名刚刚毕业的学生时,我第一次在国家太阳观察站(National SSolar Observatory)接触到了如今版本控制系统的鼻祖 —— SCCS。今天,已经出现了数不胜数的版本控制系统,而 SCCS 也早已被更强大的产品所...
JAVA是一种跨平台的编程语言,具有“一次编写,到处运行”的特性,使得系统具备高度的可移植性。而J2EE(Java Platform, Enterprise Edition)是Oracle公司推出的用于开发企业级应用的平台,它包含一系列的服务和...
Socket是网络编程的一个重要概念,它提供了进程间通信(IPC)的能力,特别是在分布式系统中,使得不同计算机之间的应用程序能够相互通信。TCP/IP协议族是Internet上的通信标准,它由多层协议组成,包括应用层、传输...
对于服务架构的改造,梁宇鹏还提到了“不完美主义”的概念,即在业务量快速增长的过程中不要追求一次性的完美设计,而是应该容忍失败并逐步解决问题。例如,会话存储的拆分策略,以及在节点关闭逻辑中采取的逐步优化...
本文详细记录了实际操作中的一次服务器数据恢复过程,包括事件发生背景、操作步骤、使用的工具及遇到的问题和解决方案。 首先,当意外执行rm -rf命令导致文件被删除时,如果文件系统是ext3,可以使用ext3grep工具...
此外,极光推送的技术团队积累了海量服务经验,处理过从零用户到百亿用户的增长过程,不断吸取经验教训,以适应不断变化的用户需求和技术挑战。如今,极光推送能够支持月活用户达到1.6亿,同时在线用户超过3000+,...
总的来说,柳州工学院的这个ASP期末大作业涵盖了ASP编程基础、数据库操作、网页设计、团队协作等多个方面,是一次综合性的实践教学,旨在提升学生的实际操作能力和问题解决能力。通过分析源码和实训报告,我们可以...