tomcat busy thread如何统计的

tomcat busy thread

突然好奇tomcat的busy thread怎么统计的,翻了下代码。

阅读更多

Druid连接泄露记录

现象

当时数据库需要升级配置,已知中间会有闪断,按照之前的经验都是自动重连然后恢复。但是,这次tomcat的连接线程全部变成busy,导致应用不能提供服务。线程栈如下:

阅读更多

mediawiki-plantuml

mediawiki的plantuml插件,在渲染中文的时候,发现文字丢了。

方框里中文的说明都没有了,最后发现是缺少字体,这里mark下。

阅读更多

cglib-tips

  • 设置debug的环境变量
1
2
3
4
5
6
7
8
9
/**
* 该设置用于输出cglib动态代理产生的类
*/
System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "/tmp/");

/**
* 该设置用于输出jdk动态代理产生的类
*/
System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");

阅读更多

升级grafana

缘起

目前的grafana版本过低,只有在状态变化的时候才发送报警的提醒

Grafana sends notifications on state changes, so OK -> Alerting, Alerting -> OK, OK -> NoData, etc

阅读更多

mybatis-get-generated-id

mybatis获取自增主键

使用useGeneratedKeys

1
2
3
<insert id="add" parameterType="Staff" useGeneratedKeys="true" keyProperty="id">
insert into Staff(name, age) values(#{name}, #{age})
</insert>

阅读更多

sqlserver杀掉慢查询

SQL

查询慢查询的信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT DISTINCT
SUBSTRING(qt.TEXT, (er.statement_start_offset/2)+1, ((CASE er.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT) ELSE er.statement_end_offset END - er.statement_start_offset)/2)+1) AS query_sql,
er.session_id AS pid,
er.status AS status,
er.command AS command,
sp.hostname AS hostname,
DB_NAME(sp.dbid) AS db_name,
sp.program_name AS program_name,
er.cpu_time AS cpu_time,
er.total_elapsed_time AS cost_time
FROM sys.sysprocesses AS sp LEFT JOIN sys.dm_exec_requests AS er ON sp.spid = er.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
WHERE 1 = CASE WHEN er.status IN ('RUNNABLE', 'SUSPENDED', 'RUNNING') THEN 1 WHEN er.status = 'SLEEPING' AND sp.open_tran > 0 THEN 1 ELSE 0 END
AND er.command = 'SELECT'
ORDER BY er.total_elapsed_time DESC

阅读更多