2019-01-03-codelife-服务器迁移

文章目录

        • nginx 504 gateway time out
        • tomcat Creation of SecureRandom
        • 域名解析
        • log4j2中关于SocketAppender

公司服务器迁移,我负责后端几个项目的部署,nginx的配置。记录一下遇到几个问题

nginx 504 gateway time out

nginx 504 gateway time out , 这个问题是因为 Nginx请求后端tomcat服务器超时返回的结果, 可以在后端调大 proxy_read_time 的值,原来是60S,后来调整到300S。但是调整大后发现问题依然存在,这时候意识到,60秒都tomcat都没返回结果?怎么可能这么慢?所以去查看tomcat的日志catalina.out。

tomcat Creation of SecureRandom

发现有一个地方卡住了,因为是多项目部署在不同tomcat上,观察了一下,等待时间为2~10分钟左右,好像还有一个等等了十几分钟。具体日志信息如下,可以看到中间等待了 191217毫秒,约190秒,约3分10秒。

02-Jan-2019 19:31:43.608 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRa
ndom instance for session ID generation using [SHA1PRNG] took [191,217] milliseconds.

搜索了这个问题, 这篇博客解决了问题 , 对于这篇博客

第一,没讲清楚在catalina.sh里面哪里加,看那语法,加在末尾就是不对的。尝试了在里面多个有 -Djava的地方加上这一行,因为多个项目部署在多个tomcat中,结果感觉对某一个是有效的,对另外一个还是无效。无奈使用第二种方法

第二,使用第二种方法可以了,过程如下:

[root@ecs devcloud]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

[root@ecs devcloud]# find / -name jre
/etc/alternatives/jre
/usr/lib/jvm/jre
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre
/usr/lib/jvm-exports/jre

# 当前使用1.8.0_181
[root@ecs devcloud]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/
[root@ecs java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64]# cd jre/lib/security/

[root@ecs security]# vi java.security
# 进入修改,如下注释第一行,写入第二行
# securerandom.source=file:/dev/random
securerandom.source=file:/dev/./urandom

域名解析

在关于域名解析也上了一课,这次迁移涉及到4个子域名的修改, api.xx.com, res.xx.com,web.xx.com, xx.com 。在阿里云上修改了域名所指向的ip之后, api.xx.com, res.xx.com, web.xx.com 都按预期在几分钟内的指向新ip,但是 xx.com 一直没有执行新ip还是指向旧ip,大概有20分钟没有切换到新IP,还以为出了什么问题,20多分钟后终于生效了。事后找了一篇文章读了下 为什么域名解析会那么慢

万网云解析都是实时生效的,一般只需几秒即可同步到各地 Local DNS 上,但各地 Local DNS 均有缓存机制,解析的最终生效取决于各运营商刷新时间。

如修改了 DNS 地址后使用万网云解析修改解析记录,最终生效时间同样取决于各地运营商的DNS服务器缓存刷新时间。但各地 DNS 的刷新时间不一致,且刷新时间较长,导致解析在全球生效时间需要 24~48 小时。(.com 等国际域名需要 48 小时,.cn 等国内域名需要 24 小时)

xx.com 该域名相比其他三个二级域名,访问的次数和范围比较广,应该是这个原因导致DNS刷新比较慢。

log4j2中关于SocketAppender

另外还有一个细枝末节的东西,就是关于log4j2的SocketAppender。某个jar包中的日志器启用了socketAppender,发送日志到远程日志服务器,在启动的时候log4j2会尝试去连接指定的ip,结果因为该日志服务器还没有开启。在输入命令启动该jar中main方法后

java -jar xx.jar

由于远程日志服务器连接不上,log4j2会等待直到超时并进行重连,直到放弃重连抛异常,这个过程是阻塞的,就会拖慢启动的速度,把socketAppender取消掉或者先开启日志服务器即可解决。

你可能感兴趣的:(nginx,tomcat,log4j2,域名刷新,服务器迁移,codelife)