baidu_39602148 2021-07-06 14:48 采纳率: 25%
浏览 181
已采纳

tomcat部署在linux服务器,过一段时间就访问不了web界面,提示连接被重置

tomcat服务单独部署在一台服务器上,大概400人在使用,过一段时间就访问不到web界面,浏览器界面提示连接被重置,但是tomcat日志也没有报错还在正常运行, netstat -anop|grep 11000 查看连接有40多个SYN_RECV状态的连接, 我怀疑是tcp连接的问题导致连接不上,但是不能复现

  • 写回答

4条回答 默认 最新

  • renminzdb 2021-07-06 15:27
    关注

    你好,像你这种情况呢,我理解是你的tomcat是部署在linux上的一个节点。对外提供了外网访问,是么。如果是这样子的话,400个人访问,可能就会出现由于并发导致不能及时得到响应。表现上页面可能打不开、白页等待。如果调出f12的话,你看看是否存在pending的资源加载情况。 服务端器端日志不报错,说明不是业务报错问题,应该是性能上的问题。 tcp大量处于建立连接状态,占用了大量的io资源。 我建议你从两方面查一下: 主机侧查下 连接数设置,优化下linux内核关于tcp连接方面的参数;应用侧查下是否存在gc等情况,另外tomcat线程数做下调整。一般单节点好像也就400个并发线程。 请求多了,会出现阻塞等待。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 小P聊技术 2021-07-06 14:50
    关注

    1、查看tomcat服务应用日志路径下*/logs/catalina.out的日志输出
    tail -100 calalina.out
    看到如下报错:
    2018/04/06-19:24:16 >> ERROR >> catalina-exec-3981 >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1515) >>
    java.lang.OutOfMemoryError: PermGen space
    2018/04/06-19:26:03 >> INFO >> catalina-exec-3982 >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:203) >> 19:26:03.114 [catalina-exec-3982] INFO monitoring - remoteAddr = 130.81.10.3, request = / GET: 2918 ms, erreur, 0 Ko
    2018/04/06-19:26:03 >> ERROR >> catalina-exec-3982 >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1515) >>
    java.lang.OutOfMemoryError: PermGen space
    可以断定是内存溢出。
    2、查看linux系统对应用的进行限制数
    ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    file size (blocks, -f) unlimited
    pending signals (-i) 1024
    max locked memory (kbytes, -l) 32
    max memory size (kbytes, -m) unlimited
    open files (-n) 1024
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    stack size (kbytes, -s) 10240
    cpu time (seconds, -t) unlimited
    max user processes (-u) 212992
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited
    进程的open files 最大为1024个文件,默认
    3、使用root用户查看linux系统 当前进程打开了多少个文件句柄
    lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
    4192 67896
    打开文件4192,进程67896
    查看进程
    ps -ef |grep 67896
    webuser 67896 1 52 Apr03 ? 3-14:02:26 /usr/java/jdk1.7.0_79/bin/java -Dnop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m -javaagent:/appdynamics/AppServerAgent/javaagent.jar -Djava.endorsed.dirs=/tomcat-8.0.30/endorsed -classpath /tomcat-8.0.30/bin/bootstrap.jar:/tomcat-8.0.30/bin/tomcat-juli.jar -Dcatalina.base=/tomcat-8.0.30 -Dcatalina.home=/tomcat-8.0.30 -Djava.io.tmpdir=*/tomcat-8.0.30/temp org.apache.catalina.startup.Bootstrap start
    找到指定进程java打开文件数4192,远超过1024,溢出。
    将内存由2C/12G 扩成 4C/12G
    将tomcat/bin/calalina.sh配置
    调整为JAVA_OPTS="-Xms2048m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=1024m"
    然后重启观察

    评论
  • 关注

    1.路由追踪(tracert),发现能够到达服务器,基本排除了线路的问题。

    2.检查80端口(tracetcp),本地端口连通性测试,测试结果也没有问题(附:tracetcp使用方法https://help.aliyun.com/knowledge_detail/40572.html)。

    3.检查防火墙,之前,我将防火墙的CC防护模式更改为“紧急”,难道是“紧急”模式对网站造成了误杀,于是我将防火墙防护模式改为“正常”,再次访问网站,发现大部分页面基本不再出现“连接被重置”现象,但是在某些特定的页面(表单提交)还是会出现连接被重置的现象啊,查询资料,发现是client_max_body_size这个参数的问题,在nginx的配置文件中(nginx.conf),添加这个参数:client_max_body_size  30M,重新访问,问题解决。

    4.网上查询资料说如果使用了代理服务器,出现类似的问题,在配置文件引入下面的代码可解决(注:未亲自验证)。

    proxy_set_header      Host            $host;
    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;

    评论
  • 左右逢源fy 2021-07-06 15:18
    关注

    1、查看tomcat服务应用日志路径下*/logs/catalina.out的日志输出
    tail -100 calalina.out
    看到如下报错:
    2018/04/06-19:24:16 >> ERROR >> catalina-exec-3981 >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1515) >>
    java.lang.OutOfMemoryError: PermGen space
    2018/04/06-19:26:03 >> INFO >> catalina-exec-3982 >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:203) >> 19:26:03.114 [catalina-exec-3982] INFO monitoring - remoteAddr = 130.81.10.3, request = / GET: 2918 ms, erreur, 0 Ko
    2018/04/06-19:26:03 >> ERROR >> catalina-exec-3982 >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1515) >>
    java.lang.OutOfMemoryError: PermGen space
    可以断定是内存溢出。
    2、查看linux系统对应用的进行限制数
    ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    file size (blocks, -f) unlimited
    pending signals (-i) 1024
    max locked memory (kbytes, -l) 32
    max memory size (kbytes, -m) unlimited
    open files (-n) 1024
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    stack size (kbytes, -s) 10240
    cpu time (seconds, -t) unlimited
    max user processes (-u) 212992
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited
    进程的open files 最大为1024个文件,默认
    3、使用root用户查看linux系统 当前进程打开了多少个文件句柄
    lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
    4192 67896
    打开文件4192,进程67896
    查看进程
    ps -ef |grep 67896
    webuser 67896 1 52 Apr03 ? 3-14:02:26 /usr/java/jdk1.7.0_79/bin/java -Dnop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m -javaagent:/appdynamics/AppServerAgent/javaagent.jar -Djava.endorsed.dirs=/tomcat-8.0.30/endorsed -classpath /tomcat-8.0.30/bin/bootstrap.jar:/tomcat-8.0.30/bin/tomcat-juli.jar -Dcatalina.base=/tomcat-8.0.30 -Dcatalina.home=/tomcat-8.0.30 -Djava.io.tmpdir=*/tomcat-8.0.30/temp org.apache.catalina.startup.Bootstrap start
    找到指定进程java打开文件数4192,远超过1024,溢出。
    将内存由2C/12G 扩成 4C/12G
    将tomcat/bin/calalina.sh配置
    调整为JAVA_OPTS="-Xms2048m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=1024m"
    然后重启观察
    ————————————————
    版权声明:本文为CSDN博主「卡农2020」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u012034742/article/details/79908967

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 spyder运行重复
  • ¥15 有偿做一个PUBG识别枪械配合罗技宏的
  • ¥15 我考考你,这代码是对的还是错的?
  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 paddle训练自己的数据loss降不下去