兰林

Results 167 comments of 兰林

# 2 - strace 跟踪系统调用 strace可以跟踪系统调用的执行情况,在程序发生问题后,可以用strace分析和跟踪问题。 ```shell strace -d -f -p $PID // 跟踪执行并将结果直接输出到屏幕 strace -o /tmp/strace.log -f -p $PID // 跟踪执行并将结果记录到strace.log ``` * -d 开启 debug 并将跟踪结果直接输出到屏幕 * -f...

# 3 - gdb 调试 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,可以用来调试C/C++开发的程序,PHP是使用C语言开发的,所以可以用GDB来调试PHP程序。 gdb调试是命令行交互式的,需要掌握常用的指令。 ### 使用方法 ```shell gdb -p 进程ID gdb php gdb php core ``` gdb有3种使用方式: * 跟踪正在运行的PHP程序,使用gdb -p 进程ID * 使用gdb运行并调试PHP程序,使用gdb php -> run server.php...

# 4 - lsof 跟踪句柄 Linux平台提供了`lsof`工具可以查看某个进程打开的文件句柄。可以用于跟踪PHP工作进程所有打开的socket、file、资源。 ### 使用方法 ```shell lsof -p [进程ID] ``` ### 运行结果 ```shell lsof -p 26821 lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing Output information may...

# 5 - perf 性能跟踪 `perf`工具是Linux内核提供一个非常强大的动态跟踪工具,`perf top`指令可用于实时分析正在执行程序的性能问题。与`callgrind`、`xdebug`、`xhprof`等工具不同,`perf`无需修改代码导出profile结果文件。 ### 使用方法 ```shell perf top -p [进程ID] ``` ### 输出结果 ![perf](https://user-images.githubusercontent.com/3468024/99497728-4811ac00-29b1-11eb-9cad-4f21e550f291.png) perf结果中清楚地展示了当前进程运行时各个C函数的执行耗时,可以了解哪个C函数占用CPU资源较多。 如果你熟悉Zend VM,某些Zend函数调用过多,可以说明你的程序中大量使用了某些函数,导致CPU占用过高,针对性的进行优化。

## 二、MongoDB 需要【**尽量避免使用**】的操作符列表 1.`$where` 和 `$exists`: 这两个操作符, 完全不能使用索引。 2.`$ne` 和 `$not`: 通常来说取反和不等于, 可以使用索引, 但是效率极低, 往往也会退化成扫描全表. 3.`$nin`: 不包含, 这个操作符也总是会全表扫描 4.管道中的索引只有在管道最开始时的 match sort 可以使用到索引. 一旦发生过 project 投射, group 分组, lookup 表关联,unwind 打散等操作后,...

## 三、关于 explain 的解读 ### 阅读说明: 在看查询结果的阶段树的时候是从【最里层】一层一层 【往外】 看的,不是直接顺着读下来的。 1.explain 结果将查询计划以阶段树的形式呈现。 2.每个阶段将其结果(文档或索引键)传递给父节点。 3.中间节点操纵由子节点产生的文档或索引键。 4.根节点是MongoDB从中派生结果集的最后阶段。 ### 关键词说明: | 关键词 | 说明 | |-------|-----| | COLLSCAN | 全表扫描 | | IXSCAN |...

MongoDB Index Cheat Sheet or MongoDB索引及排序备忘 #94

@minteliuwm 我只能给你一些建议,你自己去尝试一下。不保证有效。 1. 检测你的 git 版本是不是最新的。 2. 你本身是否有这个项目的访问权限。 3. 如果你开启了账户的双重验证、或者你准备 clone 的项目是一个开启了单点登录(SSO)的企业项目,那你必须要生成一个个人的 access token,而不能直接用密码访问。 4. 如果你使用 ssh 来访问,你必须先生成 ssh key 公私钥匙对。 5. 如你的目标项目的企业要求单点登录的,这个时候只能用 https 来访问,不能用 ssh. 6. 根据我第一种解决办法,设置好缓存,并配置好 ssh 再试。...

@changety 这位老哥,麻烦别偏题,别误导别的同学。大家一直都是在说 git 的问题,不是 homebrew

### 下载 vim themes 1. 找一个主题包下载,比如 https://github.com/rafi/awesome-vim-colorschemes 2. 将 colors 目录下的 `xxx.vim` 文件全部拷贝到 `~/.vim/colors` 中即可 3. 打开 .vimrc 修改 `colorscheme 主题名`,然后保存退出即可