数据库
查询最近一段sql日志中执行时间最长的语句
穆琪 发表于2023-05-09 浏览145 评论0
tail -n 10000 postgresql-2022-09-15_090253.log | grep duration | sort -k 7 -r -n | head -n 10
用这条语句去查最近1w行的sql日志,或者直接grep排序用sort -k 7 -r -n
数据库
es单值与多值查询模板
穆琪 发表于2023-05-09 浏览139 评论0
背景
在开发过程中,经常遇到要去es中查询数据排查问题的情况,这时候就需要有一个简单的模板带入参数进行查询。
语句
# 单值 curl -XGET localhost:9200/xxx/_search?pretty -d '{"query":{"term":{"":""}},"from":0,"size":1}' # 多值 curl -XGET localhost:9200/xxx/_search?pretty -d '{"query":{"bool":{"must":[{"term":{"attacker":"x.x.x.x"}},{"term":{"victim":"x.x.x.x"}}]}},"from":0,"size":1}'
数据库
在pg中终止一条执行中的语句
穆琪 发表于2023-05-09 浏览139 评论0
背景
我们在使用分区表的时候经常会使用定时任务创建分区表,但是如果表链接没有完全断开,就会锁表。此时就需要一条语句将锁表的sql给终止掉。
语句
SELECT pg_terminate_backend(PID);
pid即为对应的sql语句的pid。
操作系统
Docker与防火墙问题——不让docker创建iptables规则
穆琪 发表于2023-04-28 浏览146 评论0
1.背景
在某一天,线上被扫出来一个服务漏洞,但是那个服务漏洞的端口不在firewalld防火墙上开放,查了大半天,发现docker自动会在iptable上面添加规则。
操作系统
根据进程pid查看该进程所属的容器
穆琪 发表于2023-04-28 浏览135 评论0
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}' | grep "PID"
将PID换成实际pid即可
杂项
CI/CD简述
穆琪 发表于2023-04-28 浏览138 评论0
1.背景
杂项
Git Merge 与 Git Rebase的区别
穆琪 发表于2023-04-28 浏览128 评论0
1.背景
merge和rebase都是用于分支合并,但实现机制不同。
git merge是将两个分支的修改合并成一个新的提交,并保留两个分支的历史记录;
git rebase是将一个分支的修改应用到另一个分支上,使得两个分支的修改看起来像是顺序提交的。
接下来,通过图形的方式直观地介绍git merge和git rebase的工作过程。
2.合并(Merge)
git merge是将一个分支的修改融入到另一个分支的一种方式,可执行两种类型的合并:fast-forward 和 no-fast-forward,现在你可能分不清,不过没关系,我们马上来看看它们的差异所在。
数据库
查看pg中正在执行的语句
穆琪 发表于2023-04-28 浏览141 评论0
1.背景
有时候代码写的不好,会导致sql性能比较差,比如乱用in_。这时候就需要查看pg中正在执行的语句,看哪些语句执行时间过长。
2.sql语句
select pid, datname, usename, client_addr, application_name, state, backend_start, xact_start, xact_stay, query_start, query_stay, replace(query, chr(10), ' ') as query from (select pgsa.pid as pid, pgsa.datname as datname, pgsa.usename as usename, pgsa.client_addr client_addr, pgsa.application_name as application_name, pgsa.state as state, pgsa.backend_start as backend_start, pgsa.xact_start as xact_start, extract(epoch from (now() - pgsa.xact_start)) as xact_stay, pgsa.query_start as query_start, extract(epoch from (now() - pgsa.query_start)) as query_stay, pgsa.query as query from pg_stat_activity as pgsa where pgsa.state != 'idle' and pgsa.state != 'idle in transaction' and pgsa.state != 'idle in transaction (aborted)') idleconnections order by query_stay desc;
操作系统
grep 打印出前后n行的内容
穆琪 发表于2023-04-28 浏览117 评论0
1.背景
在开发排查问题的过程中,需要grep错误日志,为了更好的分析,需要把grep到的错误日志的前后n行打印出了,此处以10行为例。
2.步骤
可以使用 grep 命令结合 Context Control 选项来打印出匹配行的前后行内容,其中 -C 选项用于指定要打印的上下文行数,例如:
操作系统
检查在 Linux 中按 RAM 或 CPU 使用率排序的进程
穆琪 发表于2023-04-28 浏览105 评论0
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
效果: