ttys3 / typecho-docker

docker-typecho-alpine-s6
https://hub.docker.com/r/80x86/typecho
33 stars 17 forks source link

使用docker hub官方镜像80x86/typecho发布一定数量的文章访问速度很慢 #3

Closed duktig666 closed 3 years ago

duktig666 commented 3 years ago

利用docker的镜像80x86/typecho搭建博客网站后,发布1篇文章,各项性能还比较,但是发布的文章到15篇左右访问的速度就很慢,TTFB可以达到10s,而且docker容器显示unHealthy,不明白什么原因造成的。

ttys3 commented 3 years ago

利用docker的镜像80x86/typecho搭建博客网站后,发布1篇文章,各项性能还比较,但是发布的文章到15篇左右访问的速度就很慢,TTFB可以达到10s,而且docker容器显示unHealthy,不明白什么原因造成的。

unhealthy 可能是容器挂了。需要检查一下 docker 日志。

我不觉得这个问题跟数量有关系。 1000 个日志 和 1 个日志,应该是没差别。

ttys3 commented 3 years ago

还有一个原因,当初这个镜像里面有一个针对低性能的arm的参数设置。

只允许比较少的并发, 比如 nginx worker_processes 5;

对于个人博客,自己访问来说是够用, 但是如果是公开访问了,则是远远不够用的。

需要把参数调大。

duktig666 commented 3 years ago

我是利用docker-compose部署的,另一个同学是纯docker部署的(当然这应该没用什么关系),我们两个都遇到了,发布文章达到15-20篇左右的时候,typecho容器的开始显示出unhealthy,然后访问速度变得很慢,最直接的体现是TTFB达到了10s,也就是一次刷新需要等待10S,但是还是能访问的。 当我将文章删掉,变成一篇的时候,发现TTFB下降到了1.5S左右。
我们在想,发布文章会存储到数据库中,应该和容器本身没什么关系才对,百思不得其解。
我的其他一个同学是在宿主机部署+Apache的,TTFB竟然才0.5ms左右

duktig666 commented 3 years ago

还有一个原因,当初这个镜像里面有一个针对低性能的arm的参数设置。

只允许比较少的并发, 比如 nginx worker_processes 5;

对于个人博客,自己访问来说是够用, 但是如果是公开访问了,则是远远不够用的。

需要把参数调大。

我是利用docker-compose开了三个容器mysql、80x86/typecho和nginx。80x86/typecho里面内置了一个nginx,等于说走了两次的nginx代理。

ttys3 commented 3 years ago

还有一个原因,当初这个镜像里面有一个针对低性能的arm的参数设置。 只允许比较少的并发, 比如 nginx worker_processes 5; 对于个人博客,自己访问来说是够用, 但是如果是公开访问了,则是远远不够用的。 需要把参数调大。

我是利用docker-compose开了三个容器mysql、80x86/typecho和nginx。80x86/typecho里面内置了一个nginx,等于说走了两次的nginx代理。

你改一下配置应该就好了。worker 5 是远远不够用,如果要对外访问。

duktig666 commented 3 years ago

好的,我改了试试。

duktig666 commented 3 years ago

另外想问下大佬,typecho容器当时只开放了一个端口,后来博客系统想提供评论邮件提醒服务,需要开放465端口。 像这种容器已经启动,还需要额外开放端口的,有好的解决办法吗?感觉重新run一个容器这样的方法有些不太友好。

duktig666 commented 3 years ago

还有一个原因,当初这个镜像里面有一个针对低性能的arm的参数设置。

只允许比较少的并发, 比如 nginx worker_processes 5;

对于个人博客,自己访问来说是够用, 但是如果是公开访问了,则是远远不够用的。

需要把参数调大。

现在nginx为worker_processes 1,我们三个人的服务器都是1核2G的配置,这个worker_processes应该配置多少比较合适呢? 看了一些博客,这个参数好像不是随便配置的。

duktig666 commented 3 years ago

要设置成worker_processes auto吗?

ttys3 commented 3 years ago

要设置成worker_processes auto吗?

可以的。

ttys3 commented 3 years ago

因为那个限制其实是针对 arm64 的,对于 x86 来于,太多限制没有必要。

duktig666 commented 3 years ago

更改nginx worker_processes配置,重启容器,访问速度并没有什么提升,而且容器还是显示unhealthy。

duktig666 commented 3 years ago

typecho的日志 typecho的日志

ttys3 commented 3 years ago

这个脚本会在每次容器启动的时候修改配置, 这里需要注释掉:

https://github.com/ttys3/docker-typecho-alpine-s6/blob/723b5de3ae61e4f4d5baf7031e6f763c40aa9fb6/docker/app-init.sh#L10

#sed -i -e "s/worker_processes 5/worker_processes $CPU_NUM/" /etc/nginx/nginx.conf
duktig666 commented 3 years ago

修改重启后,容器依旧是unhealthy。目前只发布了3篇文章而已。

duktig666 commented 3 years ago

经过实测,确实使用docker搭建方式访问速度会慢很多。自己尝试搭建了个php-fpm环境,但是访问速度也TTFB也在5-6秒,而对比直接在宿主机搭建nginx和php的话TTFB只有200~400毫秒,差距还挺明显的。可能使用docker各个容器之间的通信会比较耗时。

环境:1核2G服务器

ttys3 commented 3 years ago

经过实测,确实使用docker搭建方式访问速度会慢很多。自己尝试搭建了个php-fpm环境,但是访问速度也TTFB也在5-6秒,而对比直接在宿主机搭建nginx和php的话TTFB只有200~400毫秒,差距还挺明显的。可能使用docker各个容器之间的通信会比较耗时。

环境:1核2G服务器

切换不同的 image 还在的话, 看上去跟 docker image 没关系了。 检查是不是有 ipv6 启用了之类的

docker 本身不可能 这么高的延