分类 技术 下的文章

是否开启了慢查询记录

选择某一数据库,执行db.getProfilingStatus(),可得到如下结果:

was=1表示开启了慢查询记录,0表示未开启
showms表示记录超过多少ms的数据库操作

开启记录慢查询

只开启某一个数据库,选中某一数据库后,shell里执行db.setProfilingLevel(1,200),其中,参数1表示记录的级别,参数2表示记录大于多少ms的操作

0:关闭,不收集任何数据。
1:收集慢查询数据,默认是100毫秒。
2:收集所有数据

默认情况下,开启的profile表只有1M储存空间,可通过下面命令调整到100M

- 阅读剩余部分 -

查看磁盘占用状态

df -lh

查看某目录下文件和文件夹大小情况

cd /data
du --max-depth=1

查看进程情况

ps -ef | grep mongo

查看文件内容

cat aa.txt

#对于大文件或者需要及时查看的,也可以用
tail -f /var/log/cron

- 阅读剩余部分 -

基于指定函数或指定文件侵入式分析

cProfile:基于lsprof的用C语言实现的扩展应用,运行开销比较合理,适合分析运行时间较长的程序,推荐使用这个模块;

使用cProfile进行性能分析,你可以在Python脚本中实现,也可以使用命令行执行:

if __name__ == "__main__":
    import cProfile
    # 直接把分析结果打印到控制台
    cProfile.run("test()")
    # 把分析结果保存到文件中
    cProfile.run("test()", filename="result.out")
    # 增加排序方式
    cProfile.run("test()", filename="result.out", sort="cumulative")

使用命令行运行的方法基本一致,Bash代码如下:

# 直接把分析结果打印到控制台
python -m cProfile test.py
# 把分析结果保存到文件中
python -m cProfile -o result.out test.py
# 增加排序方式
python -m cProfile -o result.out -s cumulative test.py

也可直接对代码段进行分析:

import cProfile, pstats, StringIO
pr = cProfile.Profile()
pr.enable()
#需要调试的代码段
pr.disable()
s = StringIO.StringIO()
ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
ps.print_stats()
print s.getvalue()

#或

from cProfile import Profile
def runRe():
    import re
    re.compile("aaa|bbb")
prof = Profile()
prof.enable()
runRe()
prof.create_stats()
prof.print_stats()

- 阅读剩余部分 -

很多时候,大家可能只是依靠 console.log 来调试 JavaScript 代码,这样做的局限性不言而喻,掌握工具的使用方法可以极大提高解决问题的效率。尽管 JavaScript 以难以 Debug 著称,如果你知道一些技巧可以让你更快地搞定它。

debugger;

除了console.log之外,debugger;是我最喜欢的快速 debug 的工具。一旦在代码中加入了这行语句,Chrome 在执行的时候会自动在该行停下来。你甚至可以和条件语句配合使用,仅仅在你需要它的时候开启。

if (thisThing) {
    debugger;
}

将对象以表格的形式展示

有时候,你需要查看一个复杂的对象元素。通常,我们都会使用console.log将其打印出来然后查看。其实,你还可以使用console.table,让对象更加美观地呈现出来。

var animals = [
    { animal: "Horse", name: "Henry", age: 43 },
    { animal: "Dog", name: "Fred", age: 13 },
    { animal: "Cat", name: "Frodo", age: 18 }
];
console.table(animals);

输出样式:

- 阅读剩余部分 -