debugging

用Java Flight Recorder来调优JVM性能

本文有 6486 字,大约需要 16 分钟可以读完, 创建于 2017-08-22

随着Java程序在后端压倒性的普及,其性能本身早已经无人质疑;然而一个经常不为人道的事实是,Java平台上的程序不是天然就具有很高的性能; 因为Java语言显著降低了程序员的准入门槛,真正到系统性能这一块,仍然需要大量的调试和优化,即所谓的JVM性能调优。

TCP服务端socket会丢连接的诡异问题及思考

本文有 4564 字,大约需要 11 分钟可以读完, 创建于 2017-07-14

最近在跟踪项目的性能测试的过程中,发现了一个奇怪的问题:Netty服务器端新建的Channel的数目比Tcpdump抓包得到的经历过三次握手成功的连接数要少: 总有几个连接从抓包来看成功,然后Netty并没有为其分配Channel。直观上来看,似乎是Netty的处理问题值得怀疑,似乎是用于接受新连接的线程池堵塞了。

Linux上如何从C++程序中获取backtrace信息

本文有 7433 字,大约需要 18 分钟可以读完, 创建于 2012-11-27

许多高级程序语言都提供了出错时候的调用栈打印功能,以方便尽快得到基本的出错信息,比如Java的runtime异常栈打印和Python的pdb库都提供了详细到行号的运行时信息以便调试。作为接近系统底层的高级语言,C/C++中要达到类似的功能却是很麻烦的,因为程序中的符号信息可能被strip,甚至编译器在优化阶段也会...

TCP几个小选项引发的思考

本文有 955 字,大约需要 2 分钟可以读完, 创建于 2009-10-19

许久不查TCP相关的问题,今天下班前被一同事拦下要帮忙,说他碰到了__奇怪__的问题。

wireshark解密SNMPv3-DH包

本文有 877 字,大约需要 2 分钟可以读完, 创建于 2009-07-27

出于安全性的考虑,很多网络应用可能用比较强的安全算法加密传输的数据,从而导致抓包这一强大的网络分析工具成为鸡肋,SNMP v3就是这么个例子。 Wireshark自带有配置usmUser的例子,可以自动调用netsnmp的库来完成揭秘,但对于Unix程序而言,GUI的工具本身还是有诸多不便,没有CLI工具来的舒服...

利用LD_PRELOAD发现程序潜在的问题

本文有 1486 字,大约需要 3 分钟可以读完, 创建于 2009-06-30

Solaris上,常常可以用LD_PRELOAD辅助_mdb_做一些调试、测试工作,可以发现一些其它手段难以发现的问题;最近就遇到一个。