troubleshooting

32 commands

32 shown

CPU по потокам процесса Загрузка CPU по потокам — находим горячий TID внутри процесса для jstack/perf pidstat -t -p <pid> 1 #troubleshooting#performance#cpu#debug Живой просмотр горячих потоков Потоки процесса в реальном времени; горячий TID в hex (printf %x) сопоставляем с nid в jstack top -H -p <pid> #troubleshooting#performance#cpu#debug Насыщение по ядрам CPU По ядрам %usr/%sys/%iowait — ловим одно перегруженное ядро против равномерной нагрузки mpstat -P ALL 1 #troubleshooting#performance#cpu#monitoring Очередь выполнения и ядра Колонка r в vmstat (готовые к запуску) выше nproc = насыщение CPU, а не просто высокий load vmstat 1 5 | awk 'NR>2{print "runq="$1" blocked="$2}'; nproc #troubleshooting#performance#cpu#debug Число потоков процесса Число потоков на процесс и в системе; утечка потоков исчерпывает kernel.pid_max ps -o nlwp= -p <pid>; ps -eLf | wc -l #troubleshooting#performance#debug#kernel Рост RSS во времени Снимаем RSS каждые 5с — подтверждаем реальную утечку (монотонный рост), а не обычную работу while sleep 5; do ps -o rss= -p <pid> | awk '{print strftime("%T"),$1/1024"MB"}'; done #troubleshooting#memory#debug#monitoring Быстрый итог по памяти Итог Rss/Pss/Swap одной командой без разбора всего smaps; дёшево при больших картах памяти cat /proc/<pid>/smaps_rollup #troubleshooting#memory#debug#performance Крупнейшие отображения памяти Топ отображений по RSS; находим утечку в куче, mmap или раздувшуюся библиотеку pmap -x <pid> | sort -k3 -rn | head #troubleshooting#memory#debug Топ потребителей slab ядра Slab-кэши по размеру; раздутые dentry/inode объясняют давление на память ядра slabtop -o -s c | head -20 #troubleshooting#memory#kernel#performance Освобождаемая память slab Разделяем slab на освобождаемую и нет; большой SUnreclaim = реальная утечка в ядре grep -E 'Slab|SReclaimable|SUnreclaim' /proc/meminfo #troubleshooting#memory#kernel#debug OOM killer в dmesg Жертвы OOM с читаемым временем; -T убирает нечитаемые тики ядра dmesg -T | grep -iE 'killed process|out of memory' | tail #troubleshooting#memory#oom#kernel OOM-оценка процесса Выше oom_score = вероятнее жертва; oom_score_adj -1000 защищает процесс от OOM cat /proc/<pid>/oom_score /proc/<pid>/oom_score_adj #troubleshooting#memory#oom#kernel OOM-события cgroup v2 Счётчики oom_kill/max по cgroup; под упирается в memory.max до OOM на уровне ноды cat /sys/fs/cgroup/<name>/memory.events | grep -E 'oom|max' #troubleshooting#memory#oom#k8s Удалённые файлы держат диск df полон, а du чист? Удалённые файлы держит открытый процесс; рестарт освобождает место lsof +L1 | sort -k7 -rn | head #troubleshooting#disk#debug#performance Насыщение по задержкам диска %util около 100 и растущий await = устройство перегружено; связать с шумным процессом iostat -x 1 | awk '$1!~/^$/{print $1, "util="$NF, "await="$(NF-2)}' #troubleshooting#disk#performance#monitoring Топ блочного I/O по процессам biotop из bcc: какой процесс грузит блочный I/O по байтам/задержке; modern: однострочники bpftrace biotop-bpfcc -C 5 1 #troubleshooting#disk#performance#observability Проверка переполнения таблицы conntrack Считает отслеживаемые соединения; -S показывает insert_failed/drop при переполнении таблицы conntrack -L 2>/dev/null | wc -l; conntrack -S #troubleshooting#network#kernel#performance Просмотр событий conntrack в реальном времени Поток событий NEW/DESTROY вживую для отлова потерь NAT/таймаутов по порту conntrack -E -p tcp --dport 443 -o timestamp #troubleshooting#network#debug#kernel Исчерпание эфемерных портов Считает сокеты TIME-WAIT против диапазона портов; note: включай tw_reuse, не tw_recycle ss -tan state time-wait | wc -l; sysctl net.ipv4.ip_local_port_range #troubleshooting#network#performance#kernel Сводная статистика сокетов Сводка сокетов по состояниям; рост SYN-SENT указывает на потерю SYN или фаервол ss -s; ss -tan state syn-sent | wc -l #troubleshooting#network#performance#debug Определение Path MTU Ищет узел падения PMTU; ping -M do запрещает фрагментацию для поиска blackhole MTU tracepath -n <host>; ping -M do -s 1472 -c2 <host> #troubleshooting#network#dns#debug Проверка маршрута и ARP Показывает реальный src/интерфейс к адресу; записи FAILED означают проблему L2/ARP ip route get <ip>; ip neigh show | grep -E 'FAILED|INCOMPLETE' #troubleshooting#network#debug Доступность TCP-порта сквозь фаервол TCP-SYN traceroute проходит фильтрацию ICMP; nc -zv подтверждает открытый порт traceroute -T -p 443 <host>; nc -zv <host> 443 #troubleshooting#network#security#debug Обход DNS через curl --resolve Привязывает хост к конкретному IP для теста бэкенда с сохранением SNI и Host curl -sv --resolve <host>:443:<ip> https://<host>/healthz #troubleshooting#network#dns#debug Проверка DNS внутри кластера Одноразовый под для резолва имён в кластере; проверяет CoreDNS и сервис kube-dns kubectl run dnsutils --image=tutum/dnsutils -it --rm --restart=Never -- nslookup kubernetes.default #troubleshooting#k8s#dns#debug Прямой запрос к CoreDNS Бьёт прямо в clusterIP CoreDNS; note: ndots:5 порождает лишние запросы для коротких имён dig +short @$(kubectl -n kube-system get svc kube-dns -o jsonpath='{.spec.clusterIP}') <name>.<ns>.svc.cluster.local #troubleshooting#k8s#dns#debug Просмотр конфига и логов CoreDNS Смотрит Corefile (forward/cache) и логи на предмет SERVFAIL и ошибок upstream kubectl -n kube-system get cm coredns -o yaml; kubectl -n kube-system logs deploy/coredns --tail=50 #troubleshooting#k8s#dns#observability Перечисление шифров и протоколов TLS Оценивает поддерживаемые версии TLS и шифры; отмечает слабые и устаревшие наборы nmap --script ssl-enum-ciphers -p 443 <host> #troubleshooting#tls#security#network Проверка цепочки TLS и SNI Показывает полную цепочку с верным SNI; строка Verify ловит отсутствие промежуточных openssl s_client -connect <host>:443 -servername <host> -showcerts 2>/dev/null | grep -E 'Verify|s:|i:' #troubleshooting#tls#security#debug Пакетная проверка срока сертификатов Перебирает много хостов и печатает notAfter; направь в sort для ближайших просрочек for h in $(cat hosts.txt); do echo -n "$h "; echo | openssl s_client -connect $h:443 -servername $h 2>/dev/null | openssl x509 -noout -enddate; done #troubleshooting#tls#security#monitoring Декодирование claims JWT Декодирует payload для проверки exp/iss/aud; note: чинит base64url, подпись не проверяет cut -d. -f2 <<<"$JWT" | tr '_-' '/+' | base64 -d 2>/dev/null | jq . #troubleshooting#security#secrets#api Список gRPC-сервисов через рефлексию Перечисляет сервисы и методы через рефлексию; -plaintext отключает TLS для отладки grpcurl -plaintext <host>:<port> list; grpcurl -plaintext <host>:<port> describe <svc> #troubleshooting#network#api#debug
no commands match