2016-09-01 8 views
1

우리는 생산 과정에서 cassandra 버전 2.0.9를 실행하고 있습니다. 그것은 4 노드 클러스터입니다. 지난 며칠 동안 우리는 CPU 사용률이 급증하고 있습니다. 아래 그림에서 볼 수 있습니다.높은 CPU 사용률 Cassandra (기본 전송 요청)

top

이것은 JConsole에 출력된다. 우리는 이러한 거대 CPU를 많이 (같이 12 %)을 먹고있는 기본 전송 요청을 가로 질러왔다 CPU를 많이 먹고 스레드로 보았다 jconsole

.

스레드 스택 추적. stack trace

스레드 정보 thread info

스레드 CPU %. thread top

어떻게 디버깅해야합니까?

대부분의 NTR 요청이 BCrypt.java에 붙어있는 이유는 무엇입니까? 이게 문제 야?

클러스터는 정상적으로 며칠 전에 작동했지만 현재 4 노드 중 3 개는 항상 CPU 사용률이 높습니다.

답변

1

암호가 아닌 bcrypted 해시를 저장하는 인증 기능을 사용할 수 있습니다. 따라서 각 요청을 확인해야합니다. 이것은 인증 된 세션을 재사용하는 대신 계속해서 새로운 연결을 작성하는 경우 CPU 문제가됩니다. 세션은 수명이 긴 객체이며 기본값 (https://github.com/datastax/php-driver/tree/master/features#persistent-sessions)이어야하지만 CGI 또는 지속적으로 새로운 프로세스를 만드는 무언가를 사용하는 경우 여전히 문제가 있습니다. 어쩌면 php-fpm을 시도해보십시오.

+0

답장을 보내 주셔서 감사합니다. 영구 연결을 사용하고 있습니다. 모든 요청이 실제로 인증을하고 요청을 처리하기 때문에 당신이 옳다고 보입니다. 어떻게 그걸 막을 수 있니? 나는 카산드라 대한은 phpinfo() 및 GREP을 할 때이 카산드라 지원을받을 => C/C++ 드라이버 버전을 활성화 => 2.2.2 영구 클러스터 => 0 영구 세션 => 0 지침 => 로컬 값 => 마스터 값 cassandra.log => cassandra.log => cassandra.log cassandra.log_level => 오류 => 오류 영구 연결을 사용하지 않는다는 의미입니까? 우리는 PHP-fpm –

+0

을 많이 사용하지 않을 것입니다. PHP 서버의 기술 스택과 그 설정 방법에 달려 있습니다. 영속 연결은 프로세스가 지속되는 동안 만 지속됩니다. 요청이 지속될 때마다 새로운 프로세스에 의해 처리되는 경우입니다. –