widows环境下go并发访问mysql数据库 e usage of each socket address (protocol/network address/port) is normally permitted.

pangpang · · 2902 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

###测试环境 整个应用由多个微服务组成,涉及前端与后端,在widows环境中如果进行链条则需要把 涉及到的微服务都启动在 windows主机上(关键点时 用到的 mysql数据 rabbitmq消息队列 redis 等服务都是以容器方式运行在 linux 服务器上),但是此时会产生一个问题,每次访问数据库都会开启一个tcp链接而widows的对应用程序开放的端口 TCP客户端和办事器连接时,客户端必须分派一个动态端口,默认景象下这个动态端口的分派局限为 1024-5000, 也就是说默认景象下,客户端最多可以同时创议3977 个Socket 连接。我们可以批改如下注册表来调剂这个动态端口 的局限[HKEY_LOCAL_MACHINE System CurrentControlSet Services Tcpip Parameters] MaxUserPort = 5000 (Default = 5000, Max = 65534) 因此就出现了上述问题, ###生产环境 在实际的生产环境中,是用docker-compose来管理整个应用的所有微服务, 顺便提下,微服务之间的通信 有rabbitmq(rabbitmq用到了 发布订阅机制 与 生产消费机制)和微服务之间对外 暴露的 restfull API(此时会涉及到超时的问题,并不能很好保证的每次的稳定性 ) docker container 的tcp最大链接数,并未找到数据,根据官方阐述 应该在65535 个, 所以当所有微服务都以容器方式跑在linux服务器上时go大量并发链接数据库产生的tcp端口不够用的现象,则会 减少,具体情款,待验证完补充

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2902 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传