在开发过程中发现一个问题,就是项目中的tomcat服务器启动速度很不稳定,时快时慢,尤其是部署在虚拟机里面的时候,慢得令人发指,不过同项目组的其他人对这个问题好像没放在心上,自己抽了点时间专门了解了一下。
RedHat7系统下使用xfsdump备份服务器后,在恢复的过程中有一步需要安装grub到启动分区设备中
# grub2-install /dev/sda1
在RedHat7.2的时候可以正常运行:
# grub2-install /dev/sda1
Installing for i386-pc platform.
Installation finished. No error reported.
但是在RedHat7.3的时候发生异常:
# grub2-install /dev/sda1
Installing for i386-pc platform.
grub2-install: error: unknown filesystem.
目前的曲线标准一览:
'sect163k1' # K-163
'sect163r1'
'sect163r2' # B-163
'sect193r1'
'sect193r2'
'sect233k1' # K-233
'sect233r1' # B-233
'sect239k1'
'sect283k1' # K-283
'sect283r1' # B-283
'sect409k1' # K-409
'sect409r1' # B-409
'sect571k1' # K-571
'sect571r1' # B-571
'secp160k1'
'secp160r1'
'secp160r2'
'secp192k1'
'prime192v1' # P-192 secp192r1
'secp224k1'
'secp224r1' # P-224
'secp256k1'
'prime256v1' # P-256 secp256r1
'secp384r1' # P-384
'secp521r1' # P-521
'brainpoolP256r1'
'brainpoolP384r1'
'brainpoolP512r1'
在执行全体备份的过程中有机率出现以下三个warning,现对每个warning的原因做了分析:
Warning 1:
xfsdump: WARNING: could not open regular file ino 35684867 mode 0x00008180: Stale file handle: not dumped
原因:因为xfsdump工具无法读取该文件的内容,所以不对该文件进行备份,并发出警告。
最近项目需要实现HTTP的长连接,由于项目的web服务是由tomcat搭建的,所以在server端侧实现十分简单,在server.xml文件中追加一下配置即可:
<Connector port="443"
...略...
keepAliveTimeout="300000"
maxKeepAliveRequests="100"
...略.../>
keepAliveTimeout:服务端对长连接的保持时间
maxKeepAliveRequests:每个长连接能发送请求的最大数,超过就需要重新建立连接。
理论:
1、多个HTTP请求通过一个TCP链接发送,且下一个http请求发送前不需要等待上一个请求的应答。
2、服务器必须按照与接收到的请求相同的顺序发送相关的应答。
3、先进先出,可以发生阻塞(某一个请求发生阻塞,会阻塞该请求后面所有请求的应答)。
4、HTTP Pipeline要求客户端和服务端同时都支持pipeline
5、非幂等性请求不应该使用pipeline(非强制)。
*幂等性:一次或多次请求某一个资源,应该具有相同的副作用。
背景知识:
1、cipher 是由服务进行端选择的。
2、服务端选择之前会和客户端进行协商,优先选择客户端支持的cipher。
3、如果客户端支持的cipher都不被服务端支持,则通信异常。
4、Tomcat设置cipher的方法为:在server.xml中SSL connector中的ciphers字段中设置相应的套件。
5、Tomcat7.0支持设置cipher的优先顺序,但需要Tomcat 7.0.60以上版本及JAVA 8或更新的JAVA版本。
6、如果Tomcat不设置cipher的优先顺序,服务端将以客户端的cipher列表中的先后顺序选择cipher。
7、Tomcat cipher的顺序:server.xml的ciphers字段中的顺序决定了协商时的优先顺序,所以应该将同意使用的套件按安全性强弱排列。
tomcat可以拒绝指定IP访问web应用,具体配置参照如下:
/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.246.49"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.246.50"/>
</Host>
上述配置限制了IP192.168.246.49和192.168.246.50对该web应用的访问。
最近项目运行环境的jdk版本从1.7更新到了1.8,发现一个奇怪的问题。
程序中使用了https访问了外部web server,以前如果证书验证错误会报
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
但是更新了版本之后,同样的错误却抛出javax.ws.rs.ProcessingException: Already connected
这样的异常,感觉非常奇怪,特意去了解了一下,
最后发现这其实是一个jersey的BUG,在2.22.2
, 2.23
, 3.0
这几个版本中得到了修复。
OpenStack 版本:Liberty
下面的配置针对的是allinone的部署方式,但是同理的可以应用到多节点的部署。