分类存档: 工具

一个比较有趣的性能问题排查工具

greys是一个很强大的工具,简单的一句话就是强化版的btrace. 之前遇见一个问题,就是线上查询很慢,正好通过这个工具试着诊断一下。
一 安装greys
curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
cd greys
sh ./install-local.sh
二 诊断问题
jcmd 拿到 pid
root@hzxs-hadoop-pre-03:/data/src/greys # ./greys.sh 141930
                                                        _
  ____  ____ _____ _  _  ___ _____ _____ ____  _____ _| |_ ___  ____  _  _
/ _  |/ ___) ___ | | | |/___|_____|____ |  _ \(____ (_  _) _ \|    \| | | |
( (_| | |  | ____| |_| |___ |    / ___ | | | / ___ | | || |_| | | | | |_| |
\___ |_|  |_____)\__  (___/      \_____|_| |_\_____|  \__)___/|_|_|_|\__  |
(_____|          (____/                                              (____/
                                              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                              |v|e|r|s|i|o|n|:|1|.|7|.|6|.|6|
                                              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ga?>
查看问题:
ga?>trace com.bilibili.berserker.horoscope.biz.service.impl.HoroChannelDomainServiceImpl listChannelList
Affect(class-cnt:1 , method-cnt:1) cost in 416 ms.
`—+Tracing for : thread_name=”qtp2142442467-651″ thread_id=0x28b;is_daemon=false;priority=5;
    `—+[7371,7370ms]com.bilibili.berserker.horoscope.biz.service.impl.HoroChannelDomainServiceImpl:listChannelList()
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@38)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getPlatform(@39)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@39)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getStartDate(@40)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@40)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getEndDate(@41)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@41)
        +—[9,8ms]com.bilibili.agilawood.util.BeanUtils:copy(@43)
        +—[9,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getStartDate(@46)
        +—[9,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getEndDate(@47)
        +—[9,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getSortField(@48)
        +—[9,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getSortType(@49)
        +—[7371,7362ms]com.bilibili.berserker.horoscope.dao.HoroChannelDataDAO:listChannels(@45)
        +—[7371,0ms]org.apache.commons.collections.CollectionUtils:isEmpty(@51)
        `—[7371,0ms]com.bilibili.agilawood.util.BeanUtils:copyList(@55)
发现大量的耗时在一个DAO操作上
原因是上线时候没有给查询条件加上索引导致的,添加索引后。
ga?>trace com.bilibili.berserker.horoscope.biz.service.impl.HoroChannelDomainServiceImpl listChannelList
Press Ctrl+D to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 474 ms.
`—+Tracing for : thread_name=”qtp685399117-2763″ thread_id=0xacb;is_daemon=false;priority=5;
    `—+[64,63ms]com.bilibili.berserker.horoscope.biz.service.impl.HoroChannelDomainServiceImpl:listChannelList()
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@38)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getPlatform(@39)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@39)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getStartDate(@40)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@40)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getEndDate(@41)
        +—[1,0ms]com.google.common.base.Preconditions:checkNotNull(@41)
        +—[1,0ms]com.bilibili.agilawood.util.BeanUtils:copy(@43)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getStartDate(@46)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getEndDate(@47)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getSortField(@48)
        +—[1,0ms]com.bilibili.berserker.horoscope.api.query.HoroChannelSimpleQuery:getSortType(@49)
        +—[64,63ms]com.bilibili.berserker.horoscope.dao.HoroChannelDataDAO:listChannels(@45)
        +—[64,0ms]org.apache.commons.collections.CollectionUtils:isEmpty(@51)
        `—[64,0ms]com.bilibili.agilawood.util.BeanUtils:copyList(@55)
一个SQL查询从7秒多降到了64毫秒。
三 总结
greys是一个不错的工具,还有其他很强大的功能,具体可见使用文档:https://yq.aliyun.com/articles/2390



阅读全文…

ansible的安装踩坑经历

安装ansible过程中遇见的问题

阅读全文…

字符集及编码方式

碰到个问题,中文解析乱码,顺手查了些资料,就记在这里了。
自己以前也写过一篇类型的文章:http://www.inter12.org/archives/622

一 基本概念:

字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。
常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集
常见字符编码:ASCII编码、GB2312编码、BIG5编码、GB18030编码、Unicode编码
一般所说的UTF-8,包含了
unicode:为表达任意语言的任意字符而设计。它使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph)。每个数字代表唯一的至少在某种语言中使用的符号。
Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案
 
通常所见的utf-8:指的是unicode字符集,utf-8编码方式
 

二 常见解释:

Accept-Charset:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

阅读全文…

常见流控算法及Java实现

现在主要的工作是处理一些中间件,所以流控必然是需要去考虑的东西。

阅读全文…

zookeeper的简单集群搭建

1.zookeeper安装和使用
包下载地址 :http://zookeeper.apache.org/releases.html#download

阅读全文…

tigase笔记二 — 杂乱信息

一 几个核心的概念

阅读全文…

tigase的笔记一 — 基本的配置

基本介绍

阅读全文…

xmpp服务端tigase在centos搭建过程

1.前期环境搭建
1.1 mysql 安装
mysql 安装: yum install mysql-server.x86_64
检查安装:rpm -ap | grep mysql
mysql启动:/etc/init.d/mysqld start
检查是否启动:netstat -anpl | grep 3306
修改root密码:mysqladmin -u root password ‘root’

阅读全文…

tsung的使用笔记

因为写一个IM的消息通信后台,使用的是netty的websocket来实现,所以需要压测下实际的结果如何。网上查了下发现还是tsung最为强大。可以压测各种场景,还能支持数据和图形界面的结果展示.

阅读全文…

分布式消息队列kafka系列介绍 — 配置文件详解

kafka的配置分为 broker、producter、consumer三个不同的配置

阅读全文…

Pages: 1 2 Next