个人随笔
目录
一次因为服务器Nginx使用的OpenSSL版本过低造成的访问故障
2023-01-13 16:03:52

背景

公司要搞秒杀活动,之前开发的秒杀功能,但是因为用户量少,所以一直也没有怎么压力,这一波突然之间搞了一个火爆的活动,没想到遇到了奇怪的问题。

过程

1、活动早上九点开始,有几万十万用户涌进来,发现瞬间页面就访问不了了,上服务器查看每个节点以及nginx的日志,非常正常,没有一点报错,top也是正常的,疑惑,但是访问活动就是不行,只能等到下一波活动的到来。

2、下一波活动到来了,发现还是秒挂,要两分钟后才正常,无语了,继续等下一波活动来。

3、活动又来了,秒挂,机智的我直接访问域名,发现域名都进不去,那就证明跟我们的应用无关,可能是负载有问题。但是我们的nginx服务器也是正常的,然后nginx前还有一个A10硬件负载均衡。询问A10管理员,说未作任何限制,无奈,内心虽然有怀疑,但是只能继续观察,看有啥新的发现。

4、活动又来了,秒挂,我们活动一直用https,机智的我把s去掉,改为http,发现可以正常进入活动,但是https不行,继续向A10管理员反应现象,后管理员说A10配置的https最多只支持16000/s并发,终于找到原因,采取将A10配置的https挪到我们nginx自行配置,静待活动开始。

5、活动又来了,没挂,正常,系统毫无压力,没想到只是用redis来应对就可以支持几万人的秒杀了,开下。打开管理端看看秒杀数据,尼玛打不开。

啥,不安全,不可能啊,活动都可以正常使用。然后发现360和微信浏览器可以正常访问,谷歌和Edge不行,喵的,太奇怪了。上网检查了证书的有效性,都是有效的,证书链也是全的,但是就是不行。后面从浏览器调试(打开谷歌浏览器访问, 按F12,点击security),查看发现竟然用的是TLS1.0不应该啊。

我看了nginx配置都是全配了的

6、继续找原因,查看linux中安装的OpenSSL版本(openssl version),发现版本也是正常的,都是1.0.1以上的,我们知道如果需要支持1.2的话. 注:OpenSSL版本要求 >= 1.0.1,那怎么回事的,继续查看nginx使用的OpenSSL的版本(./nginx -V),发现虽然linux服务器上装的是1.0.2,但是nginx编译的时候却指定的是0.9开头的,无语。难道要重新编译nginx,还好之前别的机器有编译过相同版本的nginx,只需要替换conf下面和sbin下面的内容即可,杀掉重启。

7、终于完全正常了。

 571

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2