请问为什么tidb,有1台服务器cpu很高,别外2台相对空闲?

请问为什么tidb,有1台服务器cpu占用很高,别外2台相对空闲?

目前环境:
为了省钱,发扬勤俭节约的优良传统,tidb、pd、kv 都分别放在3台服务器。
其中1台始终CPU占用172%,另外2两相对空闲。发现tidb-server进程占用最高,另外2个节点占用相对较少。

请问是不是tidb前端需要配置负载均衡器才能实现像Oracle RAC那样自动分布负载到其它节点?


无语,登录另外2台看进程,全是空的。。。。。所有进程都在那1个节点上,相当于1台机器抗起了所有,半边天都承包了。。。和女人有得一比。。。

mysql> show processlist;
±---------±-----±------------------±-----±--------±-----±-----------±-----------------+
| Id | User | Host | db | Command | Time | State | Info |
±---------±-----±------------------±-----±--------±-----±-----------±-----------------+
| 73400348 | root | 172.0.0.31:39508 | NULL | Query | 0 | autocommit | show processlist |
±---------±-----±------------------±-----±--------±-----±-----------±-----------------+
1 row in set (0.00 sec)

mysql> show processlist;
±-----------±-----±------------------±-----±--------±-----±-----------±-----------------+
| Id | User | Host | db | Command | Time | State | Info |
±-----------±-----±------------------±-----±--------±-----±-----------±-----------------+
| 3772778706 | root | 172.0.0.31:43092 | NULL | Query | 0 | autocommit | show processlist |
±-----------±-----±------------------±-----±--------±-----±-----------±-----------------+
1 row in set (0.00 sec)

是的,前面要接负载均衡,我们这边用的是云厂商的slb,你也可以试试TiProxy

在 TiDB-Server 前端部署负载均衡器(如 HAProxy、Nginx、云厂商 LB),将应用请求均匀分发到多个 TiDB 节点。 如果使用 MySQL 驱动(如 JDBC),可配置 loadBalanceStrategy 实现客户端负载均衡。

请问使用云厂商的LB靠谱些吧,搭建HAProxy会不会不稳定,而且后期还需要维护,出了问题,还得自己背锅。

看自己运维范畴,如果对HAProxy没信心的话,就用云产品吧。如果是同个域名解析到不同的TiDB节点,让DNS做轮询,这个有条件也可以试试,没测试过。

是的,要加负载。可以尝试一下官方负载
https://docs.pingcap.com/zh/tidb/stable/tiproxy-overview/

我们是用的keepalived+haproxy

谢谢,你不怕keepalived+haproxy出现故障么,还得自己维护,平时还要漏洞修复,升级打补丁啥的。 :joy:

:yum:不怕,有问题解决问题。

如果使用keepalived+haproxy或tiproxy,是不是还需要购买两台服务器单独安装这个呢?

我们是和tidb节点在一起的。

是不是热点数据都在同一台上

没有负载均衡,所有会话都跑在1台机器上了。

可以用云产品的负载均衡,例如阿里云的SLB,如果私有云,可以用官方推荐的haproxy

tidb、pd、kv 都分别放在3台服务器,tidb服务链接的,kv存储数据的,你那台比较高呢。

你没有设置负载均衡吧,估计请求都到同一台机器了。你把连接信息改成另外两台机器的,查看资源使用情况是否发生变化

负载没做好,将大量请求集中到了其中一台机器。

把请求都链接到tidb那台,那台是负责连接请求的,一般情况下负载会很低,tikv是存储数据的负载会高点。

你这应该是请求全部放一台上面了,我公司用的是阿里云,在阿里云上面买的负载均衡,让他平局你连接3个tidb服务器请求。