Tomcat多线程紊​乱​?

jAmEs_ 2014-04-16 03:05:04
最近遇到这样的问题,在高并发(可能也不是算很高,但是相对平常高,大概同一时段200个访问,但是由于客户端的时间有些诧异,就当30秒内有200个并发)情况下,好像出现多线程紊​乱​的情况,网上找到一个这样的文章
http://wenku.baidu.com/link?url=W1W39enJv15dvg7sT2BM8JoLiPzclfy868kNRvs2i0W9IBBmBYq2Wbc3_-i6Lks8TwTUuaSwvyNYonpyjEIQPMnIaOb66Z424419zURttny
具体的表现是,已经在这些代码增加步骤的跟踪日志,如果正常可能是每个访问都是1=>2=>3=>4=>5=>6这样的顺序,但是实际发生的情况是,部分访问是1=>2=>6,或1=>2=>3=>6这样无序的记录,所以怀疑多线程紊​乱了。
看看有没有人有这样的经验,帮忙解决,非常感谢!!!!
...全文
339 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2014-04-30
  • 打赏
  • 举报
回复
引用 10 楼 jAmEs_ 的回复:
现在: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>6(E用户的6,日志有输出用户信息) C用户:1=>2=>3=>6(F用户的6,日志有输出用户信息) D用户:1=>2=>3=>4=>5=>6 ...
意思是说,代码有无可能是: logger.log("1"); ... logger.log("2"); try { ... logger.log("3"); ... logger.log("4"); ... logger.log("5"); ... } catch (Exception ex) { // do nothing } logger.log("6"); 上述情况的异常控制则可能发生你所述的日志情况,所以我的建议是改为: try { // doing 1 } catch (Exception ex) { // do nothing } finally { logger.log("1"); } try { // doing 2 } catch (Exception ex) { // do nothing } finally { logger.log("2"); } try { // doing 1 } catch (Exception ex) { // do nothing } finally { logger.log("3"); } 当然如果确定没有上述异常处理机制则另当别论了。 另一种可能问题则是所使用日志输出组件是否存在配置不当等问题。这个可以尝试临时替换掉 logger,改为自己写的一个logger方法,直接把日志输出到一个自己指定的文件中(并同时让原logger也输出一份),再检查你自己所输出的这个文件是否会出现问题。
jAmEs_ 2014-04-21
  • 打赏
  • 举报
回复
引用 7 楼 losebaby 的回复:
楼主用的是JSP做的吗?
使用SSH
jAmEs_ 2014-04-21
  • 打赏
  • 举报
回复
补充: 应该出现下面情况: 正常: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>3=>4=>5=>6 C用户:1=>2=>3=>4=>5=>6 D用户:1=>2=>3=>4=>5=>6 ... 现在: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>6(E用户的6,日志有输出用户信息) C用户:1=>2=>3=>6(F用户的6,日志有输出用户信息) D用户:1=>2=>3=>4=>5=>6 ...
jAmEs_ 2014-04-21
  • 打赏
  • 举报
回复
1. 不是用户操作,是程序执行过程增加日志,是多个用户同时访问tomcat,然后tomcat按代码执行,类似下面代码,当然execute存在多个函数调用,也不是只有1个函数,但是这个不是关键,我可以说,自己已经确定步骤1=>6,中途异常也就按2的情况。 class Action{ public String execute() { ... logger.log("1"); ... logger.log("2"); ... logger.log("3"); ... logger.log("4"); ... logger.log("5"); ... logger.log("6"); } } 因中途可能会出现OOM,我也只是网上找到一个相关性的文章,并不一定是一样的情况,只能说可能tomcat真的存在这样的BUG? 2. 你当我已排程异常造成问题。 如果是异常,按代码应该是会: 正常: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>3=>4=>5=>6 C用户:1=>2=>3=>4=>5=>6 D用户:1=>2=>3=>4=>5=>6 ... 现在: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>Exception C用户:1=>2=>3=>Exception D用户:1=>2=>3=>4=>5=>6
可乐罐 2014-04-18
  • 打赏
  • 举报
回复
楼主用的是JSP做的吗?
MiceRice 2014-04-18
  • 打赏
  • 举报
回复
问题描述的还是不够清晰,你给的链接只是说在OOM的情况下可能出现紊乱,但跟你说的紊乱效果也不尽相同。 ◎ 你是如何保证 某用户:1=>2=>3=>4=>5=>6 这一执行过程的? 是同一个线程连续执行这六个动作? 还是形成6个任务在线程池中执行? 还是用户自己操作6次? ◎ 有无捕获所有可能出现异常的地方,换个问法:日志记录动作都放在最外层的 finally 里面了么?
jAmEs_ 2014-04-17
  • 打赏
  • 举报
回复
自己顶,每次问的问题都没人能解答,没劲
jAmEs_ 2014-04-17
  • 打赏
  • 举报
回复
我说的多线程不需要我控制,是tomcat本身的多线程,程序本身不需要多线程控制。
  • 打赏
  • 举报
回复
不应该是多线程运行紊乱,可能是多线程同步问题,没处理好
jAmEs_ 2014-04-16
  • 打赏
  • 举报
回复
正常: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>3=>4=>5=>6 C用户:1=>2=>3=>4=>5=>6 D用户:1=>2=>3=>4=>5=>6 ... 现在: A用户:1=>2=>3=>4=>5=>6 B用户:1=>2=>6 C用户:1=>2=>3=>6 D用户:1=>2=>3=>4=>5=>6 ... 我也觉得可能性不高,但是确实发生了。
sugar6234 2014-04-16
  • 打赏
  • 举报
回复
这不太可能吧,不明白怎么个紊乱法
jAmEs_ 2014-04-16
  • 打赏
  • 举报
回复
补充: 日志是通过log4j实现,其中设置了输出线程信息: %t: 输出产生该日志事件的线程名 在日志里面发现有时同一个线程名称会变成不同的访问标志(正常1个访问1个访问标志)
在Windows 10或Windows 11操作系统中,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置中没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略中设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或中断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了帮助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享中常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧