PHP-FPM模式下可怕的 MongoDB-PHP-Driver 连接池无节制连接问题
问题发生环境:
Nginx
PHP 5.3.10 as php-fpm extension to nginx
mongodb-php-driver 1.2.12
MongoDB 2.2
此问题是 MongoDB PHP Driver 1.2.x 的官方特性导致的,描述请看 PHP-202 和 PHP-347 。简单地说,PHP-FPM模式下,每一个 PHP Worker 进程都有自己独立的 mongodb 连接池,从而导致连接数极易超标,内存数也随之倍增。
一,PHP服务背景:
某个 Web 应用是通过 Nginx+factcgi 运行的 PHP 程序提供服务的。
PHP-FPM的最大子进程数,是通过 php-fpm.conf 的 max_children 参数设置的(或pm=dynamic时由 spare_servers+start_servers 参数综合决定)。这个值曾被设置为512 。
二,MongoDB服务背景:
mongodb 实例的最大连接数限制可以通过启动参数中的 maxConns 设置:
maxConns:默认值取决于系统的限制(如 ulimit 和 file descriptor)。如果没设置这个参数, mongodb 自己不会限制连接数。但,你不能设置超过 20,000 。
一般不刻意设置 maxConns 参数。
三,MongoDB PHP Driver 的可怕连接池特性(BUG?)
MongoDB 官方提供的 mongodb-php-driver 在 1.3.0 以下版本(1.2.0~1.2.1x),拥有一个可怕的连接池实现方案,在执行任何查询时,都会从连接池中请求一个连接,完成之后再归还给连接池。这里的完成是指持有该连接的变量离开了它的作用域。www.2cto.com
PHP-FPM模式下,一个 PHP Web 应用能对 MongoDB instance 建立的并发连接数计算方式如下:
进程数:max-children = 512 ,那么是 512 个进程;
一个MongoDB实例对应一个连接池:主站配置了165和166两个副本集实例;
连接池中的连接数:mongodb-php-driver 对此不做任何限制,可以无限增加直到句柄耗尽为止。
——————郑昀:此计算方式出自 mongo.connecting.pools ——————
根据 mongodb 官方文档说明,虽然连接数无限增长理论上是有可能的,但实际观测发现,一个 Web Server 与一个 mongodb 实例的连接数通常会稳定在一个值上,不会有太大的起伏 。
那么,假设一个 PHP Web 应用向 mongodb-165 发起的连接数为 :
750 个,
该 MongoDB 实例为此需要维护的内存数至少为:
750 × 默认10MB = 7.5 GB

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WeChat 방해금지 모드는 무엇을 의미합니까? 요즘 스마트폰의 인기와 모바일 인터넷의 급속한 발전으로 인해 소셜 미디어 플랫폼은 사람들의 일상 생활에 없어서는 안될 부분이 되었습니다. WeChat은 중국에서 가장 인기 있는 소셜 미디어 플랫폼 중 하나이며 거의 모든 사람이 WeChat 계정을 가지고 있습니다. 우리는 위챗을 통해 친구, 가족, 동료들과 실시간으로 소통하고, 삶의 모든 것을 공유하고, 서로의 현재 상황을 배울 수 있습니다. 그러나 이 시대에 우리는 또한 정보의 과잉과 개인정보 유출의 문제에 필연적으로 직면하게 됩니다. 특히 집중하거나 집중해야 하는 사람들에게는 더욱 그렇습니다.

WinRE(Windows 복구 환경)는 Windows 운영 체제 오류를 복구하는 데 사용되는 환경입니다. WinRE에 들어간 후 시스템 복원, 공장 초기화, 업데이트 제거 등을 수행할 수 있습니다. WinRE로 부팅할 수 없는 경우 이 문서에서는 문제 해결을 위한 수정 사항을 안내합니다. Windows 복구 환경으로 부팅할 수 없습니다. Windows 복구 환경으로 부팅할 수 없는 경우 아래 제공된 수정 사항을 사용하십시오. Windows 복구 환경 상태 확인 다른 방법을 사용하여 Windows 복구 환경으로 들어가십시오. 실수로 Windows 복구 파티션을 삭제하셨습니까? 아래에서 전체 업그레이드 또는 Windows 새로 설치를 수행하십시오. 이러한 모든 수정 사항에 대해 자세히 설명했습니다. 1] Wi-Fi 확인

Keep 체지방 측정기 연결 방법 Keep에는 특별히 고안된 체지방 측정기가 있지만 대부분의 사용자는 Keep 체지방 측정기 연결 방법을 모릅니다. 다음은 Keep 체지방 측정기 연결 방법에 대한 그래픽 튜토리얼입니다. 편집자가 사용자에게 제공합니다. 관심 있는 사용자가 와서 살펴보세요! Keep 체지방 측정기 연결 방법 1. 먼저 Keep 소프트웨어를 열고 메인 페이지로 이동하여 오른쪽 하단에 있는 [내]를 클릭하여 [스마트 하드웨어]를 선택합니다. 2. 그런 다음 내 스마트 장치 페이지에서 중앙의 [기기 추가] 버튼을 클릭한 후 인터페이스를 추가하려는 기기를 선택하고 [스마트 체지방/체중 측정기]를 선택합니다. 4. 그런 다음 기기 모델 선택 페이지에서 [체지방 측정기 유지] 옵션을 클릭합니다. 5. 마지막으로 아래 표시된 인터페이스에서 마지막으로 하단에 [지금 추가]를 선택합니다.

Win10의 제한된 네트워크 연결에 대한 솔루션 기술의 급속한 발전으로 인터넷은 사람들의 삶에 없어서는 안될 부분이 되었습니다. 그러나 때때로 Windows 10 운영 체제를 사용하는 컴퓨터에서 인터넷에 연결할 때 몇 가지 문제가 발생할 수 있으며 그 중 하나는 제한된 연결입니다. 이 경우 웹페이지 접속, 파일 다운로드, 네트워크 기능을 정상적으로 사용할 수 없습니다. 그렇다면 이 문제를 해결할 수 있는 방법은 없을까? 이 문서에서는 몇 가지 일반적인 솔루션을 소개합니다. 1. 먼저 네트워크 연결 설정을 확인하세요.

방해 금지 모드에서 전화를 받는 것조차 매우 짜증나는 경험이 될 수 있습니다. 이름에서 알 수 있듯이 방해 금지 모드는 모든 수신 전화 알림과 이메일, 메시지 등의 알림을 끕니다. 다음 솔루션 세트를 따라 문제를 해결할 수 있습니다. 수정 1 – 초점 모드 활성화 휴대폰에서 초점 모드를 활성화합니다. 1단계 – 위에서 아래로 스와이프하여 제어 센터에 액세스합니다. 2단계 – 다음으로 휴대폰에서 "초점 모드"를 활성화합니다. 집중 모드는 전화기에서 방해 금지 모드를 활성화합니다. 수신 전화 알림이 전화기에 표시되지는 않습니다. 수정 2 - 초점 모드 설정 변경 초점 모드 설정에 문제가 있는 경우 이를 수정해야 합니다. 1단계 – iPhone 설정 창을 엽니다. 2단계 – 다음으로 집중 모드 설정을 켭니다.

1. 이어폰을 이어폰 상자에 넣고 뚜껑을 열어둔 상태로 상자의 버튼을 길게 눌러 이어폰 페어링 상태로 들어갑니다. 2. 음악 감상 기능을 켜고 블루투스 헤드폰을 선택하거나, 시계 설정 기능에서 블루투스 헤드폰을 선택하세요. 3. 성공적으로 페어링하려면 시계에서 헤드셋을 선택하세요.

디지털 시대의 발전과 함께 공유 프린터는 현대 사무 환경에서 없어서는 안 될 부분이 되었습니다. 그러나 때로는 공유 프린터를 프린터에 연결할 수 없는 문제가 발생할 수 있으며, 이는 작업 효율성에 영향을 미칠 뿐만 아니라 일련의 문제를 일으킬 수도 있습니다. 이 문서에서는 공유 프린터가 프린터에 연결할 수 없는 이유와 해결 방법을 살펴보는 것을 목표로 합니다. 공유 프린터가 프린터에 연결할 수 없는 데에는 여러 가지 이유가 있으며, 그 중 가장 일반적인 것은 네트워크 문제입니다. 공유 프린터와 프린터 간의 네트워크 연결이 불안정하거나 중단되는 경우 정상적인 작동이 불가능합니다.

Edge 브라우저를 사용하여 웹 페이지에 액세스할 때 연결이 전용 연결이 아니어서 웹 탐색이 실패한다는 메시지가 표시된 적이 있습니까? 어떻게 진행되고 있나요? 많은 친구들이 이 문제를 해결하는 방법을 모릅니다. 다음 세 가지 해결 방법을 살펴볼 수 있습니다. 방법 1(간단하고 투박함): 엣지 브라우저에서 설정에 들어가 보안 기능을 끄고, 웹사이트 권한에서 위치 접근권한을 차단하는 방법으로 웹사이트 접속이 불가능한 문제를 해결해 볼 수 있습니다. 이 접근법의 효과와 기간은 다양할 수 있으며 구체적인 효과를 확인할 수 없다는 점에 유의하는 것이 중요합니다. 브라우저를 다시 시작한 후 웹사이트를 방문하여 문제가 해결되었는지 확인할 수 있습니다. 방법 2: 키보드를 영어 입력으로 조정
