你所需要的,不仅仅是一个好用的代理。
我常常惊讶于它们竟然远未被充分利用.你能用这些工具解决很大范围内的问题:从性能问题(太多的系统调用,内存分配等等)到死锁,网络问题,磁盘问题等等.
其中最有用的是最直接的strace,只需要运行 sudo strace -p 12345 或者 strace -f 指令(-f 即同时追踪fork出来的子进程),这就行了.输出一般会非常大,所以你可能想要把它重定向到一个文件以便作更多的分析(只需要加上 &> 文件名).
再就是ltrace,有点类似strace,不同的是,它输出的是库函数调用.参数大体相同.
还有lsof 用来指出你在ltrace/strace中看到的句柄数值的意义.比如:
更好的跟踪
使用简单而可以做很多事情-人人都该装上htop!
现在找到那些你想要的进程,再输入:
没 有好的持续的服务器监控,但是如果你曾遇到一些很诡异的情况,诸如为什么一切都运行的那么慢,那些系统资源都干什么去了,...等这些问题,想弄明白却又 无处下手之际,不必动用iotop、iftop、htop、iostat、vmstat这些工具,就用dstat吧!它可以做之前我们提过的大部分工作可 以做的事情,而且也许可以做的更好!
它会用一种紧凑的,代码高亮的方式(不同于iostat,vmstat)向你持续展示数据,你还经常可以看到过去的数据(不同于iftop、iostop、htop).
只需运行:
很可能有一种更简短的方式来写上面这条命令,
这是一个相当复杂而又强大的工具,但是这里我只提到了一些基本的内容(安装以及基础的命令)
用python2.7-dbg 运行程序:
现在使用:
python 3.3版本以后新增的一个很棒的功能,可以向后移植到python2.x版本.只需要运行下面的语句,你就可以大抵知道什么原因引起来段错误.
嗯,这种情况下有很多的工具可以使用,其中有一些专门针对WSGI的程序比如Dozer,但是我最喜欢的当然是objgraph.使用简单方便,让人惊讶!
它没有集成WSGI或者其他,所以你需要自己去发现运行代码的方法,像下面这样:
你会得到像这样一张图(注意:它非常大).你也可以得到一张点输出.
内存使用
有时你想少用些内存.更少的内存分配常常可以使程序执行的更快,更好,用户希望内存合适好用)
有许多可用的工具,但在我看来最好用的是pytracemalloc.与其他工具相比,它开销非常小(不需要依赖于严重影响速度的sys.settrace)而且输出非常详尽.但安装起来比较痛苦,你需要重新编译python,但有了apt,做起来也非常容易.
只需要运行这些命令然后去吃顿午餐或者干点别的:
接着安装pytracemalloc (注意如果你在一个virtualenv虚拟环境下操作,你需要在重新安装python后再次重建 – 只需要运行 virtualenv myenv)
现在像下面这样在代码里包装你的应用程序
输出会像这样:
很美,不是吗?