服务器近阶段遇到的问题和解决方法


title: 服务器近阶段遇到的问题和解决方法
date: 2017-06-22 09:06:34
tags: [Java,Tomcat]

近阶段,我们服务器一直处于不稳定的状态。
主要现象有:

  • 网站页面无法打开。
    • 静态图片无法打开
    • 一般为内存溢出或者泄露
    • 修改的方向为Java或者Tomcat方面
  • 网站应用无法正常连接数据库,进而无法进行登录等操作。
    • 网站应用无法使用MySQL数据库
    • 一般为连接池资源耗尽
    • 少数情况下为数据库账号密码出现偏差
  • 数据库连接池频繁出现死锁问题。
    • C3P0和Spring可能存在问题
    • 对其进行配置来减少死锁出现的情况

我们针对上述现象,主要有如下的解决方法

  • 定时重启网站。

    • Windows 计算机>管理>任务计划程序概述>创建基本任务。
    • Linux 使用Shell脚本或者使用Crontab程序创建定时任务。
  • 增加Tomcat连接数。

    • 在server.xml文件中配置。

  • 增加Hibernate连接池连接数。

    • 在ApplicationContext.xml文件中配置。
  • 增加JVM内存以及改变GC方法。

    • 在catlina.xml 文件中配置。

    set JAVA_OPTS=%JAVA_OPTS% -server -Xmx4550m -Xms4550m -Xmn2g -XX:PermSize=756m -XX:MaxPermSize=756m -Xss512k -XX:ParallelGCThreads=8 -XX:-DisableExplicitGC -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8

  • 检查可能会导致内存泄漏问题的代码。

    • 在DAO层进行数据库操作的时候,如果用到了HibernateSupport类中的getSession()方法,则最后应该使用releaseSession()方法来释放连接。经过上述操作之后,一个数据库连接才能被数据库连接池重用。
  • 修改Hibernate参数来减少死锁发生的频率。

    • 在ApplicationContext.xml文件中配置。