나는 this 기사를 읽습니다. 내 우려는 autoload
대 require
의 이점입니다. 기사를 읽으면서, 내가 모으는 것은 하나의 스레드가 아직 메모리에없는 객체를로드하려고 시도 할 수 있기 때문에 다중 스레드 서버에 autoload
을 사용하는 것이 좋지 않다는 것입니다.다중 프로세스 포크 서버에서 Ruby 2로 '자동로드'하는 것이 더 좋습니까?
이 기사에서는 다중 프로세스 서버는 무엇이라고 말합니까? 자동로드가 좋은가요? 그렇다면 그것이 달려 있다고 말한다. 서버가 Phusion Passenged와 같은 fork (각 요청에 대해 새 프로세스를 생성 함)를 사용하고 Ruby 2를 사용하는 경우 자동로드가 도움이되지 않습니다.
이유는 Ruby 2가 copy-on-write 의미 체계를 사용하기 때문입니다. 즉 require
을 autoload
보다 낫게 사용하는 것이 좋습니다. copy-on-write 의미론을 가지고 부팅 할 때 Foo::Bar
을로드하면 모든 프로세스간에 하나의 복사본 Foo::Bar
이 공유됩니다. 따라서 큰 메모리 사용량은 없습니다.
그러나 우리가 Ruby 2를 사용하지 않고 fork를 사용하는 다중 프로세스 서버를 사용하지 않으면 각 프로세스는 Foo::Bar
사본을로드하여 더 높은 메모리 사용량을 초래할 수 있습니다. 따라서,이 경우 autoload
은 require
인 것이 바람직하다.
내 기사의 해석이 맞습니까?