51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2935|回复: 2
打印 上一主题 下一主题

跪求接口压力测试时CPU利用率偏高解决方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-6-23 10:20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用jemeter做接口压力测试,在一定并发下,CPU利用率总是偏高,刚才测试一个空接口,结果还是CPU偏高。其中network i/o波动比较大,swap整体趋势是上升的,memeny也是上升趋势。

跪求大神给指点下如何优化此部分,请帮忙给出优化的方向好吗。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-6 17:37
  • 签到天数: 1137 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2015-6-24 10:02:52 | 只看该作者
    CPU偏高一般是事务交互频繁造成的,服务器需要不断来回处理,可以考虑优化底层代码,把读写次数(循环语句、嵌套降级 拆分)降低到单一的方法。
    尽可能用最原始的输入/输出来跟踪监控;

    MEM若是随着时间推移增大是正常的,否则看看是否缓存过大造成甚至内存溢出~

    坐等其他大大们解决
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 2811 天

    连续签到: 4 天

    [LV.Master]测试大本营

    3#
    发表于 2015-6-24 12:23:19 | 只看该作者
    因为你空接口时候CPU也很高,给你一些“网络 I/O 优化通常有一些基本处理原则(人家的经验),结合代码进行分析:
    1.一个是减少网络交互的次数:要减少网络交互的次数通常我们在需要网络交互的两端会设置缓存,比如 Oracle 的 JDBC 驱动程序,就提供了对查询的 SQL 结果的缓存,在客户端和数据库端都有,可以有效的减少对数据库的访问。关于 Oracle JDBC 的内存管理可以参考《 Oracle JDBC 内存管理》。除了设置缓存还有一个办法是,合并访问请求:如在查询数据库时,我们要查 10 个 id,我可以每次查一个 id,也可以一次查 10 个 id。再比如在访问一个页面时通过会有多个 js 或 css 的文件,我们可以将多个 js 文件合并在一个 HTTP 链接中,每个文件用逗号隔开,然后发送到后端 Web 服务器根据这个 URL 链接,再拆分出各个文件,然后打包再一并发回给前端浏览器。这些都是常用的减少网络 I/O 的办法。
    2.减少网络传输数据量的大小:减少网络数据量的办法通常是将数据压缩后再传输,如 HTTP 请求中,通常 Web 服务器将请求的 Web 页面 gzip 压缩后在传输给浏览器。还有就是通过设计简单的协议,尽量通过读取协议头来获取有用的价值信息。比如在代理程序设计时,有 4 层代理和 7 层代理都是来尽量避免要读取整个通信数据来取得需要的信息。
    3.尽量减少编码:通常在网络 I/O 中数据传输都是以字节形式的,也就是通常要序列化。但是我们发送要传输的数据都是字符形式的,从字符到字节必须编码。但是这个编码过程是比较耗时的,所以在要经过网络 I/O 传输时,尽量直接以字节形式发送。也就是尽量提前将字符转化为字节,或者减少字符到字节的转化过程。
    4.根据应用场景设计合适的交互方式:所谓的交互场景主要包括同步与异步阻塞与非阻塞方式;

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜你获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 07:59 , Processed in 0.059121 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表