遇到问题集合

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无法释放。

articles from reage blog -- http://www.ireage.com