+ debuging

This commit is contained in:
stepan 2015-10-25 23:07:53 +02:00
parent 5de31d6201
commit 9e242fbec5

View file

@ -175,6 +175,26 @@
##Дебаггінг
- Дле веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie).
- Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`,` netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU.
- Для інформації про мережу використовуйте `netstat` і `ss`.
- Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами.
- Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`.
- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі.
- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`.
- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`.
- додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`.
- Для більш серйозного дебаггінга мережі використовуйте `wireshark`,` tshark`, і `ngrep`.
- Знайте про `strace` і` ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість дебаггінга (`-c`) і можливість причепитися до процесу по pid (` -p`).
- `ldd` для перевірки системних бібліотек.
- Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека.
- Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу).
- Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д.
- Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)), і [`sysdig`](https://github.com/draios/sysdig).
- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` або `lsb_release -a`.
- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це може бути проблеми із залізом або драйверами).
##Одним-рядком
##Складно-але-корисно