John Niang
John Niang
/priority backlog
如果切换为内网数据库变快了,应该想到之前的 3-4s 中的大部分延时是地域造成的。
如果方便的话,建议开启 debug 模式,查看 halo 的详细日志,看每一步的耗时。
> @JohnNiang debug模式是哪个配置呢? 在 `application.yml` 中新增配置以下内容: ```yml logging: level: run.halo.app: DEBUG org.hibernate: INFO org.hibernate.type.descriptor.sql.BasicBinder: INFO org.hibernate.type.descriptor.sql.BasicExtractor: INFO ```
> @JohnNiang 按照这个配置了,还有没有产生任何日志,下一步该怎么排查呢 配置后需要重启才会生效。
可能得靠缓存来解决这个问题了。
> > 可能得靠缓存来解决这个问题了。 > > 这个问题的原因是什么?链接远程服务器慢是肯定的,但是也不至于这么慢。而且我博客也基本上没什么文章,如果直接加缓存来加速,是否意味着程序代码上面还有优化的空间呢? 是的,代码上确实有很多优化空间,一个页面查询太多次数据库,导致查询时间线性递增。
> 1. 大概率是halo业务代码或者配置层面的问题,我用的mysql是云数据库,不是自建的,参数都是走默认的,原则上不会有很大问题。 > > 2. 这个数据库稳定运行很久了,就最近部署了一个全新的halo应用,只有halo应用非常慢 > > 3. 其他应用性能都非常ok,稳定快速,延时都是在正常跨地域连接延时内,而且halo和其他应用都是部署在同一地域不同可用区的k8s集群内,配置什么的和其他应用都是一样的 是的,下一步得考虑缓存所有页面了,减少数据库访问次数。
> 我感觉应该要优化sql语句以及减少不必要的查询,而不是加缓存。博客类应用其实数据量和访问量并不大,是完全不需要用到缓存的,如果用了缓存本质上也是治标不治本。 你可能误解了我的意思了。这里缓存是指直接渲染页面成静态内容,缓存在内存或磁盘。
如果是因为 SQL 执行速度太慢,是需要着重优化 SQL;但是因为数据库连接太慢,我认为更重要的是要优化一下为什么连接如此慢。减少不必要的 SQL 的幅度也不会太大,该慢仍然会慢(当然,我们也会努力减少不必要的查询,或改进为并发查询)。