在java开发过程中,我们一般是在windows中开发应用程序,然后将程序发布到linux服务器上
一次开发中,我将程序发布到linux服务器上进行调试,但是发现我的数据库中某个字段的状态位经常被修改,看日志却没有任何记录,可以确认这个数据库只有一个人在用,同时代码逻辑也查看多变没有问题,而且日志当中没有任何的相关记录,这就奇怪了,这是谁在改数据库。
后来才想到程序中有定时任务,不仅在linux下面跑,windows上面也起了服务在跑定时任务,因此一定是windows上面的服务在定时修改数据库的状态,而我们只查看linux的日志,当然找不到问题。
总结:对于有定时任务的应用程序,一般来说定时任务应该只需要在一台机器上面跑,因此如果部署在多台机器上,一定要小心同时跑定时任务带来的风险。
本文分享了一次在Java开发中遇到的定时任务冲突问题排查经历。在一个应用程序中,定时任务在Windows和Linux上同时运行,导致数据库状态位被意外修改,而日志未记录相关操作。最终发现是Windows上的服务在定时修改数据库状态,提醒我们在部署含有定时任务的应用时,要避免在多台机器上同时运行的风险。
&spm=1001.2101.3001.5002&articleId=107239871&d=1&t=3&u=252094be84b94a80a60bef16e7bc0e4f)
2271

被折叠的 条评论
为什么被折叠?



