SQL 연결 + Apache 스레드 최대화

SQL 연결 + Apache 스레드 최대화

저는 MySQL + Apache를 실행하는 전용 서버를 가지고 있습니다. 3초마다 폴링하는 채팅 스크립트를 실행합니다. 이제 지난 밤에 내 MySQL 서버가 로드로 인해 종료되었습니다. MySQL 스레드와 Apache 스레드를 최대화하는 방법이 궁금합니다.

누군가 내가 동일한 결과를 얻는 데 도움이 될 수 있는 URL을 알려줄 수 있습니까?

시간 내 주셔서 감사합니다.

답변1

MySQL 성능 정보의 표준 위치는 다음과 같습니다.MySQL 성능 블로그. 또한고성능 MySQL제레미 자우드니의 책.

모든 새 세션에 대해 새 연결을 생성하는 대신 기존 데이터베이스 연결을 재사용하는 일부 형태의 연결 풀링을 애플리케이션에서 살펴보고 싶을 수도 있습니다. 이렇게 하면 새로운 TCP 연결을 여는 오버헤드와 MySQL이 수행하는 모든 처리 작업이 줄어듭니다. 또한 각 연결이 존재하려면 일정량의 메모리가 필요하므로 MySQL이 실행 중인 유휴 연결 수를 줄여야 합니다.

데이터베이스의 로드를 크게 줄이기 위해 할 수 있는 또 다른 방법은 memcached를 통합하는 것입니다. Memcached는 메모리 내 분산 키-값 저장소입니다. 네트워크에 연결된 해시 맵과 같습니다. memcached를 폴링하고 데이터가 없는 경우 데이터베이스를 확인하도록 애플리케이션을 수정합니다. 데이터를 변경하면 이를 데이터베이스에 쓰고 memcached의 데이터를 무효화합니다. 이는 MySQL보다 훨씬 더 빠른 memcached를 폴링한다는 의미입니다.

이러한 기능을 구현하고 나면, 그리고 구현한 경우에만 MySQL 매개변수 조정을 살펴볼 수 있습니다. 자신이 무엇을 하고 있는지 알지 못한다면 일을 엉망으로 만들고 데이터베이스가 이전보다 느려지는 결과를 낳을 가능성이 큽니다. 이것을 시도하기 전에 최소한 MySQL 성능 책을 읽어 보았을 것입니다.

더 많은 비용을 지출할 수 있다면 첫 번째 개선 사항은 데이터베이스를 별도의 서버로 분할하는 것입니다. 충분하지 않은 경우 쓰기는 마스터 서버로 이동하지만 읽기는 마스터와 슬레이브 간에 분산되는 마스터 및 슬레이브 복제 설정을 사용하여 살펴볼 수 있습니다. 이는 매우 일반적인 읽기 작업이 많은 워크로드에 특히 효과적입니다.

관련 정보