博客页面响应很慢的问题回顾

博客页面响应很慢的问题回顾

问题背景

前两天有个同事询问了一个分库分表的问题,我记得之前自己博客上记录了一些文章就我的文章链接发给了他,他在随后访问本站其他的文章的时候,告诉我点击没有反应,很慢,我第一反应是本站技术博客是自己采购服务器部署的,可能部署的东西过多,内存,cpu等问题的原因吧,自己业以穷的方式调侃了下,就过去了。今天刚好有点时间,就研究研究。

问题重现

image.png

上面截图可以看出,页面响应都已经2-3s时间了,这个时间确实有点长了,因为数据量还是很少的,所以感觉还是有点问题的。

问题研究解决

服务器配置:
2H4G,数据库自建的mysql

1、猜测可能是我的服务器装的东西太多,导致内存和cpu过大。

尝试将其他不重要的服务全部停了,但是我测试了下,没有太大的作用。
所以应该不是这个原因。

2、服务长时间没有重启,内存等连接没有释放等问题

尝试将nginx、mysql、博客服务等重新启动,效果也没有很大改变。

3、查看nginx日志

image.png
日志显示,后台响应请求时间很长,排除是前端页面渲染的问题。

4、后台接口层面

我找到相关的接口,采用postman的方式调用了,发现,接口响应很慢,
但是我的博客的数据量才200多,对于数据库而言应该是不存在什么问题的。
我还是将数据库备份后,删除到仅剩下一篇文章,但是依然很慢。
到这一步,我就怀疑是数据库链接问题。
继续排查服务端连接数据库的地方。我的服务方式都采用docker部署的,
mysql也是我采用docker自建的服务。但是我连接信息的地方还是采用可公网的ip作为链接。
当这一步,我就有理由怀疑是这个公网ip每次连接数据库的时候很慢造成的。

问题解决

这就有牵扯到一个问题,同一主机之间的容器互连?

容器间要能相互通信,需要同在一个网络中。
docker容器在创建时若不指定网络驱动时会默认归属到bridge网络。

1、首先创建一个网络:

docker network create networkName

2、将容器连到创建的网络中(每个容器都要连到这个网络里):

  docker network connect networkName dockerName

3、查看网络内的容器信息:

docker network inspect networkName

或者在使用docker-compose

networks:
  mynet:
    external:
      name: networkName

4、在数据库连接的地方我们就可以采用容器的名称
image.png

url: jdbc:mysql://mysql:3306/db

测试效果

image.png

可以看出,已经降到300ms了,快了好多。

评论

伏尔泰说:“使人疲惫的不是远方的高山,而是鞋子里的一粒沙。”
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×