서버의 멀티 CPU 성능을 최대한 발휘하기 위해 WorkerMan은 기본적으로 멀티 프로세스와 멀티 태스킹을 지원합니다.
WorkerMan은 외부 서비스를 제공하기 위해 메인 프로세스와 여러 하위 프로세스를 시작하며, 하위 프로세스는 독립적으로 네트워크 연결을 모니터링하고 데이터를 수신, 전송 및 처리합니다. 단순한 프로세스 모델인 WorkerMan은 더욱 안정적이고 효율적입니다. (추천 학습: workerman 튜토리얼)
메인 프로세스(데몬 프로세스)를 생성하면 브라우저 페이지를 닫아도 오랫동안 백그라운드에서 실행됩니다.
메인 스레드는 정기적으로 데이터베이스(MySQL)를 쿼리하며, 정규화된 URL(여러 개일 수 있음)이 발견되면 해당하는 수의 하위 프로세스가 생성됩니다.
하위 프로세스도 오랫동안 존재해야 하며, 해당 서버는 데이터를 검색하기 위해 정기적으로 URL이 폴링됩니다.
하위 프로세스가 검색되면 필요한 데이터를 반환하고 결과를 데이터베이스에 저장한 후 자체 종료됩니다(또는 기본 프로세스에 의해 종료됨). 프로세스
1. 각 프로세스가 차지하는 메모리의 합은 전체 메모리보다 작아야 합니다. (일반적으로 각 비즈니스 프로세스는 약 40M의 메모리를 차지합니다.)
2. , Mysql, Redis 및 기타 스토리지에 대한 일반적인 액세스와 같은 일부 차단 IO가 포함된 비즈니스는 액세스를 차단하고 있으며 프로세스 수를 CPU 코어 수의 3배로 구성하는 등 더 크게 늘릴 수 있습니다. 비즈니스에 차단 및 대기가 많은 경우 프로세스 수를 적절하게 늘릴 수 있습니다(예: CPU 코어 수의 5배 이상). 비차단 IO는 IO 집약적이지 않고 CPU 집약적입니다. 3. CPU 집약적인 경우, 즉 비즈니스에 차단 IO 오버헤드가 없는 경우 예를 들어 비동기 IO를 사용하여 네트워크 리소스를 읽고 프로세스가 비즈니스 코드에 의해 차단되지 않는 경우 프로세스 수를 CPU 코어 수로 설정할 수 있습니다. 동일위 내용은 Workerman을 여러 프로세스에서 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!