说明
当项目部署到服务器上,但是却无法访问,该怎么办,怎么分析。
下载日志
项目有写日志吧?没有的话就赶紧加上吧,不然后果就是程序出了问题但你不知道哪里出了问题。我们在本地运行项目的时候,可以通过idea或者eclipse的控制台查看错误信息,而当把项目部署到服务器上,就看不到了。因此,下载日志,查看日志,去找错误提示信息。
日志信息
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
#### The error may exist in file [/root/tomcat8/apache-tomcat-8.5.31/webapps/TimingTask_war/WEB-INF/classes/mapper/GdeDictDao.xml]
处理——把项目停下
既然程序有问题,那应该把它停下。
怎么停呢。
我的解决方法是关闭tomcat,怎么关呢?
关闭tomcat指令,调用tomcat下bin下的shutdown.sh:
/root/tomcat8/apache-tomcat-8.5.31/bin/shutdown.sh
但是,有时使用这个指令关闭tomcat会出现异常,也就是说关闭tomcat失败。这时该怎么办呢。
通过ps指令找到tomcat进程的进程号,然后通过kill指令把进程杀死:
[root@VM_16_8_redhat test0510]# ps -ef | grep tomcat
root 11625 1 1 08:50 pts/2 00:00:13 /usr/bin/java -Djava.util.logging.config.file=/root/tomcat8/apache-tomcat-8.5.31/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /root/tomcat8/apache-tomcat-8.5.31/bin/bootstrap.jar:/root/tomcat8/apache-tomcat-8.5.31/bin/tomcat-juli.jar -Dcatalina.base=/root/tomcat8/apache-tomcat-8.5.31 -Dcatalina.home=/root/tomcat8/apache-tomcat-8.5.31 -Djava.io.tmpdir=/root/tomcat8/apache-tomcat-8.5.31/temp org.apache.catalina.startup.Bootstrap start
root 12517 11196 0 09:08 pts/2 00:00:00 grep --color=auto tomcat
由上,看到11625就是tomcat的进程号,然后通过kill指令杀死进程:
[root@VM_16_8_redhat test0510]# kill -9 11625
再次查看tomcat进程:
[root@VM_16_8_redhat test0510]# ps -ef | grep tomcat
root 12563 11196 0 09:09 pts/2 00:00:00 grep --color=auto tomcat
发现,tomcat已经关闭了。
结论
通过查看日志,可以知道问题出在哪里。当出错时,如果要关闭该程序,可以直接关tomcat,这样项目也会随之关闭。
然后,这里,日志说是数据库连接出异常,也就是说没连上数据库。
但是,数据库连接异常,具体是什么原因呢,就要靠自己去解决了。
这里数据库连接异常的具体原因,看下一节的解读。