我已经部署了一个Web应用程序Python Django Rest Framework前端是Vue js,数据库是Mysql。
在数字海洋上托管网站,我正在使用具有以下配置的8 GB 4 vCPU的CPU优化的Droplet我面临性能问题,尽管托管是使用8gb ram的CPU优化的,但该站点的运行速度非常慢。
当我检查错误日志时,我能够找到[CRITICAL] WORKER TIMEOUT(PID:9116),尽管我仍然遇到相同的问题,但我增加了Gunicorn的超时时间。
1)我想提高性能 2)我想解决超时问题,我已经增加了在gunicorn中的值,因为nginx的最大值是75s,我还没有做任何添加。什么是最好的解决方案。
请帮助我测试网站性能的其他方法。
答案 0 :(得分:0)
我认为您需要优化
在生产服务器上优化django的提示。
检查您的查询。最好的检查方法是使用django调试工具栏,它将显示您产生了多少查询,如果您认为有很多查询,则可以优化查询。例如使用prefetch_related或select_related联接表,否则它将一个接一个地查询。
为表建立索引,尝试为查询中经常使用的列建立索引。只是要小心地建立索引,只索引您真正想要的列,因为在更新,删除和添加时缺点会更慢。
检查数据库的运行状况,如果您频繁执行删除或更新实际上存储在某处的数据,但这些数据仍然是索引的一部分,它称为 Dead Rows ,您可以通过执行删除操作一些命令,例如 vacuum (如果您使用的是postgres)。
按比例扩展服务器,这实际上取决于服务器的请求/流量,请检查RAM或CPU峰值以供您确定所需的单位。作为经验,我在某些表上至少有10m的数据行,在某些情况下,我将其交叉引用为30k的数据,在2gb RAM和1gb CPU上可以在很少同时请求的情况下正常工作。