TDH_Socket在淘宝某核心应用的一次压测
文章目录
最近TDH_Socket在 淘宝 某核心应用上进行了一次业务压测
此应用以写入为主 Insert update delete TPS基本一致
MySQL 使用Percona 5.5.18
数据库关键配置 :
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1
innodb_buffer_pool_size = 12G
tdh_socket_write_thread_num = 8
性能对比:
TDH_Socket | 刚启动时的MySQL | 稳定后的MySQL | |
TPS | ![]() | ![]() | ![]() |
InnoDB Statement | ![]() | ![]() | ![]() |
CPU | ![]() | ![]() | ![]() |
IO读写 | ![]() | ![]() | ![]() |
l TDH_Socket采用group commit之后 对IO的节省很大 就算达到较高的TPS io占用还是比较低(相对MySQL)
l TDH_Socket也比较节省CPU
l TDH_Socket的输出TPS一直比较稳定
此次压测也对TDH_Socket本身进行了很过bug修复和功能改进
现在使用JDBC能支持Blob,也实现了一个带池功能的DataSource而且异常信息更加详细
而且后端的hash也进行了优化可以使表分配到写线程更加平均,利用率更高
hash的优化就是会判断表名后面是否跟数字 如果有数字那么hash值就是这些数字
PS:因为现在分表都是在表名最后加数字来区分,这样hash使mod到写线程最平均
TDH_Socket 源码:https://github.com/taobao/TDH_Socket
Java客户端源码: https://github.com/taobao/tdhs-java-client