遇到问题集合
1. linux 执行命令卡住
- 执行ps -aux 卡住没有返回
- 执行ps -ef 卡住没有返回
- ls -lha /proc/pid/ 卡住没有返回
使用 strace 查看后发现卡住在 read(“/prox/pid/cmdline”, …..
cd /proc/pid
cat status
看下State 字段值:
State: D (disk sleep)
解决方案: https://bugs.centos.org/view.php?id=15252
2. mongodb 用户权限的问题
mongodb 用户是属于db, 在这个库里面创建的账号,其他db 是不可见的。
比如。 在db1, db2 都创建了user 帐户, 使用user 连接db1. 并没有操作db2权限
在db1中执行下面的命令。帐户就可以db1,db2:
db.createUser({user: "user",pwd: "pwd",roles: [ { role: "readWrite", db: "db1" },{ role: "readWrite", db: "db1" } ]})
3. go mod 遇到的问题
go mod edit -replace=xx=xx
编译报”is replaced in go.mod, but not marked as replaced in?”
原因:
编译或者运行的时,使用 -mod=vendor, 在这中情况下需要更新项目的vendor 目录。
执行 go mod vendor
需要将go mod edit replace 相关的内容更新到vendor中
包含modules.txt和 项目代码.
github.com/rs/cors@v1.7.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/rs/cors@v1.7.0: is replaced in go.mod, but not marked as replaced in vendor/modules.txt
To ignore the vendor directory, use -mod=readonly or -mod=mod.
To sync the vendor directory, run:
go mod vendor
4. ls 文件权限描述中出现at(@)符号的含义
at(@) symbol in the description of ls file permissions eg:
-rwxr-xr-x@
用来表示文件有metadata 描述, 可以xattr 命令来查看
# Disply the metadata attributes
xattr -l <file ...>
# Remove the metadata attributes
xattr -c <file ...>
# Remove the file ACL(s)
chmod -N <file ...>
5. couldn’t start listener: listen tcp ip:port: bind: can’t assign requested address
再使用goland debug的时候出现的问题。 这个问题一般是本地host中缺少了当前机器与IP的配置。 在终端执行 hostname, 在/etc/hosts 中新加 一行写入 127.0.0.1 (hostname 结果)
6. CPU 过高, pprof/profile 提示 runtime.siftdownTimer 占比比较高
原因:Ticker 对象没有释放。 Ticker是需要手动stop的,不然它会一直在timers对象内工作,导致gc无法释放。