2011-08-09 4 views
6

우리는 Unicorn_Rails + nginx를 사용하고 있습니다. 내 시스템 (4GB 램, 인텔 코어 2 듀오 CPU P8600 @ 2.40GHz)에서 개발 모드와 생산 모드에서 잘 작동합니다. 로컬 시스템에서 10 명의 작업자를 시작할 수는 있지만 더 이상 시작할 수 없습니다 생산 에서 어떤 경우에이 가끔하지만 15 20 MTS unicorn_rails유니콘 레일 - 생산 모드에서 시작하면서 100 % CPU 사용

을 시작하면서는 99.6 %의 CPU의 모든 시간이 걸립니다 기다릴 필요가 작품

인텔 (R) 제온 (R)의 CPU E5507 @의 2.27GHz 하지만, 난 아무도 어디 unicorn_rails를 사용하여 느린 시작에 대해 이야기하지 찾을

는 아마존에서 중단 (m1.small 예) 1.73 GB RAM ...

+0

당신이 이것을 알아 냈습니까? 나는 같은 문제를 가지고있다. – Morten

답변

1

Rails 시작은 CPU 바운드입니다. 거의 항상 항상 CPU를 100 % 사용합니다. 해당 인스턴스에 넣으려는로드가 너무 큽니다. CPU 코어 당 1 명의 작업자 만 필요하며 m1.small에는 하나만 있습니다.

10 명의 작업자를 시작하려고하면 CPU와 I/O를 공유하며 많은 I/O 요청은 항상 하위 시스템의 작동을 느리게 만듭니다. config/unicorn.rbpreload_app true 조항을 추가 할 수 있습니다. 이것은 시작 시간을 줄여야하지만 실제로 그러한 인스턴스에는 10 명의 작업자가 필요하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 사랑한다. .. 분명히 나는 ​​preload_app true로 시도 할 것이다. btb 나는 unicorn.rb conf 파일에서 단 1 명의 작업자 만 구성했습니다. –

+2

그때 그것은 이상합니다. Amazon 인스턴스는 그다지 강력하지 않지만 레일스를 시작하는 데 15 분이 걸리지 않아야합니다. 예전 Pentium III에서 1.5 분이면 충분합니다! (단, 작업자가 1 명인 경우 preload_app은 아무 것도 변경하지 않습니다.) 'strace -f' (daemonization없이)를 통해 시작하고 일부 syscall이 예상보다 많은 시간이 걸리는 지 확인하십시오. – whitequark

+0

절대 안됩니다. 그것도 여전히 동일합니다. –