먼저 알아둬야 할 것이 레일 액션입니다. 사용자가 페이지를 요청하면 바로 사용자에게 서비스를 제공해야합니다.
사용자가 결과를 기다려야하는 경우가 있습니다.이 경우 항상 웹 소켓 또는 HTTP streaming을 사용할 수 있습니다.
이제 Ruby와 Rails는 스레드에 문제가 있습니다.이 스레드는 "Parallelism is a Myth in Ruby"에서 읽을 수 있습니다.
는 은, 당신이 원하는대로 포크 많은 프로세스 노동자 유니콘 같은 서버를 사용하는 당신이 레일에서 사용할 수있는 솔루션입니다
, 그리고 각각의 하나는 등, 푸마 멀티 스레드를 생성
을 다른 독립적으로 작업 할
무거운 프로세스 인 작업이있는 경우 delayed_job
과 같은 프로세스 풀로 작업을 지연시킬 수 있습니다. 자바 스크립트로 멋진 UI를 만들어 작업 상태를 가져와 사용자에게 진행 상황을 보여줄 수도 있습니다. RabbitMQ로 작업 풀을 사용할 수 있습니다. 백그라운드에서 다른 프로세스가 새 메시지를 듣고 응답하고 심지어 응답을 할 수도 있습니다.
대부분의 웹 서버에는 클라이언트가 있습니다 시간 초과가 발생하고 사용자가 응답하지 않고 1 분 이상 기다려야하는 것을 원하지 않으므로 작업이 완료되는 동안 즉시 스트림 응답을 사용하여 일부 의견을 제공하거나 일부 JavaScript 코드로 응답하는 것이 좋습니다 작업이 어떻게 수행되고 있는지, 심지어 필요하다면 웹 소켓까지 서버를 계속보고있을 것입니다.
문제를 해결하기 위해 더 많은 정보가 필요합니다. 요청하는 동안 무슨 일이 일어나고 있습니까? 다른 보석들이 관련되어 있다면, 그것들은 무엇입니까? –
기본 레일에 수정 내용을 추가하지 않았습니다 (config.threadsafe를 false로 설정). 컨트롤러가 이전 요청을 처리하는 동안 다음 요청은 대기 중입니다. –
컨트롤러에서 무슨 일이 일어나고 있는지에 대한 정보가 없으면 정확한 답변을 드릴 수 없습니다. 할 수있는 모든 것은 추측이며 이는별로 유용하지 않습니다. 코드를 요약해야하므로 느린 부분을 식별하고 수정을 시도 할 수 있습니다. –