博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis测试小结
阅读量:6533 次
发布时间:2019-06-24

本文共 850 字,大约阅读时间需要 2 分钟。

hot3.png

Redis的作者给出的性能数据是每秒200K的set和get。可是我测的结果总是在30K这个水平。到底哪里出了问题?

先说说自己的测试机器:

操作系统是solaris 10. 4个CPU,Intel3.4Ghz。8G的物理内存。Redis是最新版本2.2.11. 客户端是jedis,版本是2.0

客户端和redis运行在同一台机器上。

测试思路:

1.用ExecutorService起一个线程池(初始化的线程数是100)

new ThreadPoolExecutor(THREAD,THREAD,1000,TimeUnit.MILLISECONDS,queue);

2.new了一个JedisPool。这个pool我增加了maxActive=15

3.for循环向executor.submit(new JedisWriteJob())

4.executor.shutdown().

5.for(;;)判断executor.isTerminated()来决定是否所有的task都已经完成。然后计数,算tps。

6. JedisWriteJob的逻辑是:

for循环里面生成一个Jedis对象,然后调用Jedis.set()方法。

我在运行中发现,机器的总cpu的占用率已经接近100%。这个时候redis大概占用了20%多,我的测试客户端大概占用了60%多。

这个机器上装的是vmware。不是我独享的。这是不是一个问题?不知道。没有更好的机器了。

还是自己的测试思路有问题?

问题的根源在与不应该用for(;;) execute.isTerminated()方法来判断是否所有的task都已经完成。应该用下面这个方法:

executor.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);

这样机器的cpu占用率马上就下来了。

教训就是轮训害死人。

转载于:https://my.oschina.net/u/145002/blog/28342

你可能感兴趣的文章
通过 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)
查看>>
MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
查看>>
Java单例多例理解
查看>>
centos7安装PowerDNS
查看>>
大数据||HDFS||NameNode启动过程详解
查看>>
搭建web服务器的SElinux策略保护 SElinux修改默认端口 安全web服务
查看>>
django专题—安装、创建项目、添加应用
查看>>
Kubelet无法访问rancher-metadata问题分析
查看>>
29. Apache apollo和mqtt下载和部署
查看>>
如何使用sendEmail发送邮件
查看>>
CentOS 6.8无法启动图形界面
查看>>
linux 查找僵死进程,并杀死进程
查看>>
不使用注解配置SpringMVC环境
查看>>
更换DS4700控制器的悲与喜
查看>>
python 读取excel数据到mysql
查看>>
滴滴发布智慧交通战略产品“交通大脑”
查看>>
nginx 1.8.1安装使用
查看>>
如何选购无线路由器
查看>>
AGG第二十八课 rasterizer的填充规则
查看>>
nginx高可用,构建LNAMMP架构
查看>>