안녕하세요. 포럼 사이트를 구축하고 있습니다.
사이트 설정을 변경하고 사이트를 새로고침했는데, 변경된 값이 간헐적으로 가져와지지 않습니다.
각 새로고침 시 이전에 캐시된 값이 표시되는 것 같습니다.
Puma 워커 수를 조정해 보았지만 결과는 동일합니다.
변경된 값은 데이터베이스에 저장되어 있습니다.
이것이 message_bus의 문제일까요?
만약 그렇다면 설정을 어떻게 변경해야 할까요?
답변 부탁드립니다. 감사합니다!
안녕하세요. 포럼 사이트를 구축하고 있습니다.
사이트 설정을 변경하고 사이트를 새로고침했는데, 변경된 값이 간헐적으로 가져와지지 않습니다.
각 새로고침 시 이전에 캐시된 값이 표시되는 것 같습니다.
Puma 워커 수를 조정해 보았지만 결과는 동일합니다.
변경된 값은 데이터베이스에 저장되어 있습니다.
이것이 message_bus의 문제일까요?
만약 그렇다면 설정을 어떻게 변경해야 할까요?
답변 부탁드립니다. 감사합니다!
Discourse를 정확히 어떻게 설치하셨나요?
저도 같은 현상을 확인하고 있습니다. Puma 워커 수를 1로 설정하면 문제가 사라집니다. 각 워커가 사이트 설정 객체의 복사본을 유지하고 있어, 한 워커가 업데이트를 수행해도 다른 워커들은 해당 업데이트를 알지 못하는 것으로 보입니다.
불행히도 이 문제는 여러 Discourse 서버가 배포된 확장 환경에서도 발생하므로, 워커 수를 1로 설정하는 것만으로는 문제를 완전히 해결할 수 없습니다.
저도 같은 질문을 드리고 싶습니다: Discourse를 정확히 어떻게 설치하셨나요?
유일한 지원되는 설치 방법에 따라 설치한 경우, Puma를 사용하지 않으며 이 버그는 존재하지 않습니다.
플러그인 개발을 하려고 해서 README에 있는 링크를 따라 Ubuntu 개발 환경을 설정했습니다. bundle exec rails server --binding=0.0.0.0 명령을 실행하면 Puma로 앱이 시작됩니다.
제가 본 바로는, 서버가停止된 경우 브라우저가 json 파일을 반환하거나 사이트의 캐시된 버전을 표시하는 경우가 있습니다.
서버가 아직 실행 중인가요?
제가 하는 또 다른 방법은 다른 터미널을 열고 다음을 실행하는 것입니다.
./bin/rails c
그리고 다음과 같은 방식으로 설정을 변경합니다.
SiteSetting.title=“my title”
서버는 여전히 실행 중입니다. 로그를 확인한 결과 Discourse가 요청을 처리하고 있음을 확인했습니다. 디버깅을 위해 브라우저 개발자 콘솔에서 캐시도 비활성화해 두었습니다.
왜 플러그인 개발 중에 스케일 아웃을 하시는 건가요?
증상들을 보면 내부 MessageBus가 손상된 것으로 보이며, Redis 설정에 문제가 있는 것입니다. 브라우저의 라이브 업데이트 기능도 손상되었을 수 있습니다.
플러그인 개발을 위해 스케일아웃을 하려는 것이 아니라, 문제를 좁혀서 이해했는지 확인하기 위해 몇 가지 다른 시나리오에서 테스트를 해보고 있었습니다. MessageBus가 이 문제를 처리하도록 설계된 것이라면 더 자세히 살펴보겠습니다.
디버깅을 하던 중 app/models/site_setting.rb가 여전히 :site_setting_saved 이벤트를 트리거하는 것을 발견했습니다. 이 이벤트는 앱에서 제거되고 :site_setting_changed로 대체된 것으로 보이며, 현재 :site_setting_saved 이벤트를 수신하는 리스너는 더 이상 없습니다.
bin/unicorn을 사용해서 개발 환경에서 Unicorn 웹 서버를 실행할 수도 있습니다.