2014-05-15 4 views
0

.최대 유효 숫자 리눅스

프로젝트의 최대 연결 수는 1200입니다. 연결이 설정되면 내구성이 있으며 거의 ​​다시 설정되지 않습니다.

Linux가 2 개의 hexa-core Xeon CPU 호스트 (호스트에서 총 24 개의 스레드)에서 병렬로 실행되는 1200 개의 프로세스를 효과적으로 처리 할 수 ​​있습니까? 이 기준점은 어디에 있습니까?
나는 ulimit에 대해 이야기하는 것이 아닙니다. 나는 "새로운 연결마다 새로운 프로세스"와 "모든 연결을 처리하는 고정 된 프로세스 수"를 비교할 때 성능이 저하되지 않을 것인가?
1200 프로세스가 Linux에 너무 많아서 컨텍스트 전환에 큰 오버 헤드가 발생합니까?

+0

는 "리눅스 최대 프로세스"에 대한 구글을 시도 유무 :

은이 문제에 대한 고전적인 문서가 시작하는 것입니다? – marekful

+0

코가 내게 알려주는 개념은 옳지 않습니다. 최대 1200 개의 프로세스를 생성하는 경향이있는 경우 소켓을 처리하기 위해 고정 된 양의 프로세스를 사용하고 세부적으로 자신의 임무를 정의한 다음 전환하여 멀티 스레딩을 구현하는 것이 좋습니다. – icbytes

+0

@Marcell Fülöp 예, 여기서는 제한적인 프로세스와 이론적 인 최대 프로세스 수에 대해서는 묻지 않고 있습니다. – Neighbour

답변

1

리눅스는 문제없이 천 프로세스를 처리 할 수 ​​있지만 컨텍스트 스위칭을 수행하고 수행하는 데 많은 시간을 소비합니다. 이러한 조건에서 응용 프로그램의 응답 성이 실제로 수행되는 작업의 종류에 달려 있습니다.

오늘날의 하드웨어에서 클라이언트의 수가 수백 개에 이르면 고전적인 "하나의 클라이언트 - 하나의 프로세스"가 병목 현상이됩니다 (이는 매우 근사합니다).

수천 명의 클라이언트에게 서비스를 제공하기 위해 포킹 및 스위칭 오버 헤드를 극복하기위한 새로운 기술이 개발되었습니다. 일반적으로 비 차단 IO, 스레드 또는 경량 프로세스 (사용자 공간 프로세스 내에서 관리)가 필요합니다.

귀하의 클라이언트 수가 IO를 차단할 때 일반적으로 처리 할 수있는 것보다 높기 때문에 몇 가지 벤치 마크를 작성하고 다른 접근 방법을 고려해야합니다. http://www.kegel.com/c10k.html