Are there any guides (or Topics here on the forum) that provide tips on tuning a server that hosts Discourse sites for performance?
I ran the ./Discourse-set and it set a quarter of the ram (to 4096mb) and added 8 unicorns workers - but is there anything else we can do, or tweak these?
The server has 64GB ECC Ram and two 512GB NVMe SSDs (in a raid array). Looking at top, only around 5GB of memory us being used, with 57392484 avail Mem. It does run other non-Docker sites, but they don’t use up much of the resources and MySQL is already tuned for a large 2GB db. Load averages are generally below 1.0 (usually around 0.50 up to 1.0 with occasionally going over). No problems have been reported, but I am hoping to utilise as much of the server as possible.
I’m wondering whether to start by doubling db_shared_buffers… and what about #db_work_mem: "40MB" which is currently commented out.
튜닝에 관한 몇 가지 주제(또는 과거 주제)가 있습니다. 성공적인 주제들은 (이 주제 제외) 대부분 사용 가능한 리소스, db_shared_buffers 및 기타 설정, 그리고 발생하는 문제점에 대해 구체적인 세부 정보를 제공하고 있으며, htop이나 기타 도구에서 가져온 출력 결과를 포함하는 경우도 있습니다. 데이터베이스 크기는 얼마인가요? 어떤 문제를 겪고 계신가요? (새로운 주제를 시작하는 것이 더 좋을 수 있습니다)
감사합니다! 아직까지는 문제가 없습니다. 다만 메모리 사용량이 높은 편인데, 포럼 트래픽은 많지 않은 상태입니다. 저는 평소 선제적으로 생각하고 어떤 리소스가 가장 많이 사용되고 있는지 확인하는 습관이 있습니다. 이 서버는 3GB VPS로, 6코어 @ 3.5 GHz 사양입니다. 속도는 느리지 않고 오히려 매우 빠릅니다. 다만 메모리 사용량이 앞으로 문제가 될 수 있을 것 같아 어떤 부분을 조정할 수 있을지 궁금해서요.
Ruby on Rails 애플리케이션 일반 및 최적화에 대해 좀 더 찾아보겠습니다. 다시 한번 감사합니다.
어떤 자원이든 병목 현상이 발생하는 시점이 항상 있습니다. 하지만 현재 서버는 제 눈에 보기엔 상당히 과하게 과대 규격화(overdimensioned)되어 있습니다.
Unicorn 프로세스가 더 많으면 더 많은 메모리를 사용하게 됩니다.
사이트의 트래픽이 더 많으면 더 많은 Unicorn 프로세스가 필요합니다.
모든 Unicorn 프로세스가 CPU 사용률 0.0%를 보이고 있고, 실제로 무언가를 수행하는 것처럼 보이는 것은 worker[0]뿐인 것 같습니다.
Unicorn의 수를 줄여 메모리를 절약했습니다. 이건 좋은 일입니다. 어차피 그들을 사용하지 않았기 때문입니다. 하지만 사용 가능한 메모리(available memory)가 많다는 것은 실제로는 나쁜 일입니다. 잘못된 변수를 최적화하고 있는 것입니다.
사용되지 않는 메모리는 아무것도 산출하지 못합니다. 이는 사용하지 않는 것에 대해 비용을 지불하고 있다는 뜻입니다. 항상 2GB의 사용 가능한 메모리가 있다면*, 서버를 다운사이징하여 비용을 절약할 수 있습니다.
*) Discourse를 다시 빌드할 때는 더 많은 메모리가 소비되므로, 재빌드 중에 사용 가능한 메모리가 얼마나 되는지 확인해야 합니다. 실무적으로는 총 메모리가 2GB 미만으로 내려가지 않도록 하거나, Pfaffman이 이미 말했듯이 충분한 스왑(swap) 공간이 있는지 확인하세요.