introduction
容器化部署项目问题及解决思路,在容器化过程中遇到一些难以忍受的问题,踩坑中。
(1) docker
时间修改。
docker
之类的容器化技术本身隔离性不如虚拟机技术那么好,时间并没有隔离,使用libfaketime
。
(2) 起岛的进程cpu
持续高占用。
排查思路:
对于`cpu`占用过高,一般我习惯先去`top` -`Hp` `pid`,找到高占用线程,然后用`jstack`查看线程堆栈。
但是十分诡异的是`top` -`Hp` `pid`返回的并没有占用很高的线程,每个线程都十分均衡,没办法只能不断回退版本查看哪一次修改导致这个情况。最后发现是`libfaketime`的问题,通过镜像构建时删除
DPTHREAD_SINGLETHREADED_TIME
参数解决。