php-fpm을 사용하는 10 개의 서버에서 초당 약 11000 회의 히트 수를가집니다. 내 질문은 그래서 MySQL에서 포스트 그레스로 마이 그 레이션 해요, 그것은 pg_ * * 연결을 사용하여 이해가 되니?pg_pconnect (php-fpm)을 사용하는 것이 맞습니까
답변
이 PgBouncer 같은 전용 연결 풀러를 사용하는 것이 좋습니다.
성능 pg_pconnect
에 비교할 수 있지만, PHP 코드의 오류 후 PgBouncer will allow to perform a cleanup한다. pg_pconnect
will not automatically clean open transactions, locks, prepared statements 등
글쎄, pg_pconnect는 PHP 백엔드 당 하나의 연결을 의미합니다, 그래서 당신이 얼마나 많은 백엔드에 따라 달라집니다. 기존의 Apache mod-php 설정을 사용하면 시동기가 될 수는 없지만 그럴 수는 있습니다.
데이터베이스 서버는 유휴 연결의 수백을 처리하지만 모든 쿼리가 동시에 실행되고있는 경우 거의 확실히 중단 갈기 수 있습니다. I/O가 당신을 먼저 제한하지 않는다고 가정 할 때, 코어 당 두 개 이상의 연결만으로 엄지 손가락을 보았습니다.
일반적인 접근 방식은 pgbouncer 같은 연결 풀러를 실행하고 PHP는 당 요청을 연결하는 것입니다. 동시성을 유지하면서 연결 오버 헤드를 줄입니다.
PostgreSQL 서버에 대한 연결 설정은 MySQL 서버보다 훨씬 비쌉니다. 이것은 독립적 인 연결간에 리소스 할당 및 권한 분리를 처리하는 방법에있어 이러한 데이터베이스의 다양한 디자인 선택 때문입니다.
따라서, 웹 사이트, 그것은 완전히 가능한 PostgreSQL을에 연결를 재사용 할 수 있습니다.
일반적으로 권장되는 방법은 pg_pconnect
이 아니라 pgBouncer 또는 pgPoolII과 같은 외부 연결 풀러를 사용하는 것이 좋습니다.이 작업은이 작업에 더 적합합니다. PHP-FPM을 사용할 때 fpm 프로세스 관리자 옵션을 통해 열려있는 연결 수를 어떻게 든 제어 할 수있는 미들웨어가 이미 있으므로 충분할 수 있습니다. 0이 아닌 값으로 pm.max_requests
을 설정하면 적절한 빈도로 연결이 정리되고 사용량이 적은 시간에 사용되지 않은 연결이 유지되지 않습니다.
감사합니다. 왜 pg_pconnect를 사용하지 않는 것이 좋을까요? – varan
@ RichardHuxton의 답변을 참조하십시오. 기본적으로 각 아파치 프로세스를 서로 다른 열린 PG 연결로 연결해야합니다. 그것은 종종 너무 많은 연결을 의미합니다. 그러나 fastcgi 모델은 이러한 문제를 완화합니다. –
당신은 pg_pconnect를 사용할 수 있습니다. (pgbouncer가 권장하는) 풀러를 사용한다면 연결 비용/시간을 훨씬 더 낮게 유지할 수 있습니다. pg_pconnect를 pg 서버에 직접 보내지 마십시오. –
- 1. 코드가 많은 ViewController를 사용하는 것이 맞습니까?
- 2. Rails 애플리케이션에서 괄호를 사용하는 것이 맞습니까?
- 3. finally 블록에 Response.Write를 사용하는 것이 맞습니까?
- 4. 사용자 메뉴에 ESI를 사용하는 것이 맞습니까?
- 5. C#에서 대리자를 속성으로 사용하는 것이 맞습니까?
- 6. JQuery로 작성하는 것이 맞습니까?
- 7. 개체가 자기를 거부하는 것이 맞습니까?
- 8. 컨트롤러에서보기로 알림을 보내는 것이 맞습니까?
- 9. 테이블에서 레코드를 삭제하는 것이 맞습니까?
- 10. 내장 클래스에서 상속하는 것이 맞습니까?
- 11. Singleton에 IDisposable을 구현하는 것이 맞습니까
- 12. Nhibernate 열만 반환하는 것이 맞습니까?
- 13. 현재 사용자의 역할에 대해 세션에서 키를 사용하는 것이 맞습니까?
- 14. Microsoft.Phone.Controls.Toolkit의 동작을 변경하고 응용 프로그램에서 사용하는 것이 맞습니까?
- 15. C#에서 이름 앨리어싱 대신 상속을 사용하는 것이 맞습니까?
- 16. JPA 상속을 다른 메소드 구현 방법으로 사용하는 것이 이치에 맞습니까?
- 17. 이벤트의 'source'중첩 된 객체 포인터를 사용하는 것이 맞습니까?
- 18. AOSP 구축을 위해 CyanogenMod의 장치 트리를 사용하는 것이 맞습니까?
- 19. JavaScript에서 문자열 비교를 위해 ===를 사용하는 것이 맞습니까?
- 20. 01/01/0001 날짜를 월요일로 사용하는 것이 맞습니까?
- 21. APK를 디 컴파일하여 앱의 일부 코드를 사용하는 것이 맞습니까?
- 22. 백그라운드 서비스에서 위치 정보를 얻는 것이 맞습니까?
- 23. 즉시 속성 값을 수정하는 것이 맞습니까?
- 24. CSS 속성을 html 태그로 설정하는 것이 맞습니까?
- 25. tabBarController.view에 ATMHud를 추가하는 것이 이치에 맞습니까?
- 26. strtotime()을 사용하여 날짜를 비교하는 것이 맞습니까?
- 27. const scope_refptr()을 정의하는 것이 이치에 맞습니까?
- 28. 스타일 요소에 ID를 부여하는 것이 맞습니까?
- 29. 캐시 정적 부분 부분을 조각화하는 것이 맞습니까
- 30. 다음 예제의 생성자에서 * this를 전달하는 것이 맞습니까
pg_pconnect와 pgbouncer를 함께 사용하는 것이 합리적입니까? – varan
아니요, pg_pconnect 및 PgBouncer를 사용하는 것은 의미가 없습니다. – Tometzky