绝大多数人没玩过也没见过的现象:20个MYSQL进程共用1个3306端口

各位客官听我讲,事情的过程是这样的:
       10年前,公司有一个中型网站,服务器托管在IDC机房。网站是一拨老技术搞的,后来网站不商业运营了,老技术都离职,现已渺然于网络中。但网站还是要继续技术性维护(就是能打开),后来转到我手来维护。我嫌IDC机房繁琐不方便,把网站从IDC机房转到了阿里云。
       转移到阿里云和部署都正常,但是部署完成后,发现一个问题,性能很低,MYSQL经常卡死,没道理啊。云服务器比以前的IDC服务器配置好很多,还用的是SSD硬盘,整个WEB和MYSQL配置都一样。(别嘲笑,都是1台服务器,当年也撑起日均60万+IP)
      在查性能瓶颈的时候,发现MYSQL进程占用CPU特别高。 我把IDC机房的服务器(迁移到阿里云后保留了一段时间)MYSQL和云服务器的MYSQL进程比较了一下,这一比较,发现一个惊天现象,绝大多数人都没见过的现象。

      在常识里,一个MYSQL多进程,只能一个进程占用一个端口。3306端口占用了,其他进程就不能继续使用。而IDC机房服务器有20个MYSQL进程,都用了同一个3306端口!!!  (上图,眼见为实)
     
1d24fd780acc97b8a90519454a827e0a7a9fa484

8475713767d5254ae9fb0682830d861c72060ac8

6ab143d1a25dfcac4f3de1f4a1b5f1501905a7d5

       这台IDC服务器是20个MYSQL进程,相当于20个MYSQL单进程的处理能力,难怪配置更好的阿里云服务器反而卡,因为阿里云只运行了一个3306端口的MYSQL,而不是20个3306端口的MYSQL!

     当时也想依葫芦画瓢,也做出来20个运行于同一个3306端口的MYSQL,搜遍了百度,GOOGLE,都找不到类似的案列。所谓的mysqld_multi都是运行于不同的端口。 搜索引擎靠不住,就问高手,以前的技术找不到,问了一下阿里的高手(可能没问对人),没没人知道。

     后来发现IDC服务器用的MYSQL版本是PerconaServer5.1.52,而aliyun服务器是普通的mysql Distrib 5.1.7。以为只是MYSQL 版本的问题,但是下载了PerconaServer5.1.52使用,也搞不出来20个MYSQL进程都用3306端口。继续研究发现只用IDC服务器上的PerconaServer5.1.52,在aliyun服务器上使用以下命令
/alidata/server/PerconaServer5.1.52/libexec/mysqld --basedir=/alidata/server/PerconaServer5.1.52 --datadir=/alidata/server/PerconaServer5.1.52/data --user=root --log-error=/alidata/server/PerconaServer5.1.52/data/myserver.err --open-files-limit=8192 --pid-file=/alidata/server/PerconaServer5.1.52/data/myserver.pid --socket=/tmp/mysql.sock --port=3306。也能生成20个运行在3306端口的MYSQL进程,我怀疑是IDC机房PerconaServer5.1.52编译参数不一样的缘故。

    后来在aliyun服务器上通过别的方式,优化了一下MYSQL的使用频次,可以将就用了(反正不商用)。但这个20个MYSQL进程都运行在3306端口一直是个心病。 今天突然想起,故发在这里,但图还是老图,是当时在微信里和朋友聊的记录。还请真正的MYSQL技术大牛能解惑啊!
e02dc72a80a998121d23651eaadfc7d35aa71661

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值