单机部署启动多个实例对性能有提升吗?

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】
【操作系统】
【部署方式】单机部署
【集群数据量】
【集群节点数】1
【问题复现路径】
【遇到的问题:问题现象及影响】
单机部署,配置了多个tidb实例,如下所示:

tidb_servers:

  • host: 10.10.122.240
    port: 14000
    status_port: 10080
    deploy_dir: /opt/tidb/data/tidb1

  • host: 10.10.122.240
    port: 14003
    status_port: 10083
    deploy_dir: /opt/tidb/data/tidb2

如果客户端只通过14000端口访问,会自动将负载分摊到14003端口,从而提升性能吗?

【资源配置】
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

1 个赞

不能自动将负载,你得装个tiproxy或者haproxy做个负载均衡

1 个赞

:thinking:个人觉得,不会提升性能,可能会造成资源争用。不如多节点好用。

1 个赞

但是我用sysbench实测的话,读写确实都有不小的性能提升,测试都是通过14000端口访问的,哪位帮解释下?

1 个赞

不可能吧,如果不部署proxy,测试只会走到一个tidb-servers上的,不会打到两个tidb-servers的。

1 个赞

单机还启动多个,伪分布式呗,搞不好会降低性能吧,类似单CPU的机器使用多线程技术,时间片切换都降低了不少性能了

是啊,不可能一次性处理两个连接吧

多次测试得到的稳定结果吗?

1 个赞

是的,大概有个1.3倍的性能提升吧

1 个赞

应该不会有提升

1 个赞

不会提升吧…

1 个赞

如果服务器配置很高、且有多个numa的话,单台服务器部署多个tidb、并绑定numa,性能会有提升。不借助中间件,无法实现负载均衡。

1 个赞

单机就直接mysql吧感觉,起码在极限性能的情况下IO抢占也是个大问题

1 个赞

相信你眼睛看到的

1 个赞

不会。入口是14000,不加中间件永远到不了14003

1 个赞

机器配置高的话,单台服务器部署2个tidb-server是没有问题的

1 个赞

好吧,它这里有个前提就是“机器配置高的话”,如果单机2c4g就不用考虑多实例了吧,如果32c512g这种当然就随便装喽~~

:+1:有道理

1 个赞

不会的,可以咨询官方试用下Tiem的敏捷模式 ,

1 个赞

不会自动分摊负载。也不会提升

1 个赞