加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

解决Java8HTTPS上传下载文件速度慢的问题

(2019-07-09 12:32:15)
标签:

java8

https

分类: java
     前几天遇到一个诡异的问题:java服务中上传/下载文件的速度只有2.5MBps,但是同样的机器下用wget、curl速度可以达到十倍甚至更多,java HTTPS速度慢了一个数量级。
     开始各种排查、搜索,包括使用抓包、profiler(发现99%的耗时都在SSLSocket的数据解密上)。在排查中偶然发现用java7运行测试代码速度很快,于是这个成为了一个突破口。
     Java8和Java7在这块会有什么区别呢:https://blogs.oracle.com/java-platform-group/jdk-8-will-use-tls-12-as-default  。 找到了这篇,JAVA8会默认使用TLS1.2。TLS1.2也不应该慢这么多吧,继续往下排查:https://stack【我不知道为啥拦截】overflow.com/questions/29577804/java-server-tlsv1-1-fast-tlsv1-2-extremely-slow-90mbyte-sec-versus-4mbyte-sec 。原来java8的加密算法实现得有问题,性能极差。
     解决办法可以看:https://stack【我不知道为啥拦截】overflow.com/questions/25992131/slow-aes-gcm-encryption-and-decryption-with-java-8u20 。
     简单说有几个做法:1)升级java8 sdk到8u60+ (速度快不少,但还不是很快);  2)JVM启动参数里指定使用TLS1.1,-Djdk.tls.client.protocols=TLSv1.1 ;3)禁用GSM加密算法,jdk.tls.disabledAlgorithms=SSLv3,GCM。
     Netty也建议使用openssl替代jdk的ssl,https://netty.io/wiki/requirements-for-4.x.html#benefits-of-using-openssl 。
     最后想说这个例子说明了升级Java SDK的重要性,还是尽量把SDK升级到最新稳定版本吧,可以少遇到一些坑。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有