真是被折磨得够呛!从6月4号那天我重装了阿里云ECS的系统开始,网站的访问总是会卡顿几秒。浏览器加载页面时,那个“正在等待服务器响应”动不动就飙到2~4秒以上,简直要命!
网站服务器等待响应2秒+▼
阿里云这重装系统,实质上是给你分配一个全新ECS实例,装的你选的那个系统版本。我之前的老实例跑在旧物理机上,阿里工程师已证实我现在的机器已经不是以前的物理机上了。期间还给我迁移到别的机器上问题依旧。
接下来的几天提工单跟阿里云技术小哥一直研究怎么回事,授权了工程师进入系统排查。我这边呢?把能想到的、能检查的都折腾了个遍,毫无头绪。
网站整个拷贝到腾讯云服务器打开网站不会等待2秒▼
昨天我把整个网站打包,拷贝到腾讯云的一台服务器上。配置好打开网页请求响应嗖嗖的,直接干到毫秒(ms)级别!这下可以确定网站代码是没有问题的。
既然代码没问题,那我估计是新ECS的环境哪里被我搞岔了。今晚我豁出去了,又把阿里云那台ECS系统重装了一遍。,所有软件一个一个装生怕哪里配置搞错了。鼓捣了一个多小时,感觉稳了!搓搓手地打开浏览器,F12... 完犊子!那熟悉的2秒+等待响应,它又双叒叕回来了!心凉了半截。
不死心啊!hosts文件?翻了个底朝天,干干净净。阿里那边建议抓包,抓了,导出日志给他们看,回复依然是:“看起来没啥异常”。这这这。。。。!
正准备放弃时突然一个念头蹦出来网站代码没问题,但打开网站要连数据库啊!那个数据库连接字符串... 我把原本写的localhost改成127.0.0.1保存,刷新页面“80ms!!!”页面瞬间加载完成!我简直不敢相信自己的眼睛!
网站恢复ms级▼
赶紧上网搜!果然localhost它同时指向IPv4的127.0.0.1和IPv6的::1。问题就出在这里:如果我的数据库服务(比如MySQL)没有监听IPv6的::1地址,当程序尝试用localhost连接时,系统会先尝试IPv6(::1)。连接失败它不会立刻放弃,而是傻傻地等待一个超时2秒左右,之后才去尝试IPv4的127.0.0.1。这一等,就是那要命的2秒+延迟!而我那台新装的阿里云ECS,默认是启用了IPv6的,完美踩中了这个坑。
就是一个小小的localhost修改解决问题▼
谁能想到,困扰我好几天,差点让我怀疑人生的服务器响应延迟,罪魁祸首竟然是小小的localhost和IPv6回退机制!。分享出来,希望能帮到同样在坑里挣扎的兄弟!
评论 (评论须知)
本来准备开IPv6的,结果应用实例不给开。
还得硬件上的支持。
IPv6虽然很普及,不过感觉目前应用率不太高~
大量的老旧网络设备不支持,想要全面支持这成本有点高哈。😁
我之前用微信的时候试过。。就是开启ipv6的话微信就会经常没数据、把ipv6关掉就正常了。。可能也是微信的服务器有问题吧
或许有可能吧?可能各种软件还没准备好接受ipv6😁
解决问题真的太花时间了
是啊,以前学编程时,IED没有现在的智能化,少了一个分号程序走不起来又不报错到底是哪里的问题,查一个星期是常态。
可这是腾讯..居然也会有这种问题 我真的不敢相信。。可事实就是我把ipv6关了就一切正常
所以得慎重啊,好像现在都是默认localhost,还好我目前没碰到过
是啊,但支持ipv6的默认是“::1”而不是127.0.0.1。当::1超时两秒后才会到127.0.0.1.我是以为最近换系统,阿里这边直接换了一个物理机中的ecs给我。
看你说到这,再给你说个华为云的bug,java启动得三五分钟,原因也是host文件,得配置一个127.0.0.1 主机名称的解析。
那就是一模一样的问题呀。ipv6解析超时才会转127
不一样,等以后你用华为云跑java程序就知道了,是他虚拟机架构有问题
java,远古的记忆开始攻击我了,16年前学过java。
现在已经是kotlin的天下哩233,从java换到kt只能说感觉真香
java语法都忘记怎么写的了。只在学的时候用过
还好我的ecs仅支持ipv4,貌似开v6要额外收钱。
是系统内部对localhost解析为ipv6而不是127.0.0.1
重装是新建实例?啊?
就是按排一个早就预装好了的实例。
我一直理解的是类似恢复快照
你想多了。😂。阿里直接给你安排一个新的ecs。换系统,1分钟之内就可以登录。真的重装1分钟是搞不定的😁
快照恢复很快的,预部署好的高度压缩的二进制raw镜像,直接dd释放的速度快的吓人,至于你要多大的分区那就是启动的时候一个初始化的扩容脚本的事情(arm这边封装镜像基本上都是这么干,不过x86当然也是能用的)
是啊,我刚开始也想着为啥这么快,这边点安装那边就已经开始显示开机画面了。原来是从他们的预装里面提一个新的给我。
我找到文档了,还真的是:“更换操作系统将会更换系统盘及镜像”
是的,我的连物理机都换了,这次故障技术员还准备把我的现有系统盘移到老机器上的。
其实区别不大:
1. 预装好的实例就是一个只安装了对应系统的快照。
2. 系统盘只是从存储池虚拟出来的一个块设备。
所有硬件都是虚拟的,就没有所谓的「更换」。
实际上恢复快照也就1秒中的事情。
我的这边物理机都变了这次故障技术员还把我的又移到老机器去试的。
谨慎调整参数和配置,😂
是新机器开始默认ipv6了所以出了这号乌龙。
学习啦,不容易鸭,好好休息休息趴
我都准备放弃了,服务器也就两个月的有效期了,想着到时候直接迁移到腾讯云的。
感觉你今天成就感荣耀值会比较高,哈哈
那是、那是!😎
你这数据库密码啥的都明文显示了。嘿嘿。
没事,测试用的随机码,现在都已经删除了。
有时候我打开网址好像也有卡顿的时候,不知道是不是这种情况。不过总的还好。
我去看看。
阿里云的工程师啥毛病都查不出来简直是日常的写照。
没有功能有苦劳
随便点点鼠标就能领巨额工资。
既然支持了ipv6,下一步就要支持HTTP3了。
好多年不关注web技术,现在都http3啦