3

입니다. 아래 상태에서 파일 수는 '95349'로 계산되었습니다. 이 값은 빠르게 증가하고 있습니다.열린 파일과 열린 파일 사이의 차이는

의 MySQL>show global status like 'open_%';

Open_files = 721

Open_streams = 0

Open_table_definitions = 706

Open_tables = 741

Opened_files = 95,349

Opened_table_definitions = 701

Opened_tables이 = 2,851

의이 참조.

의 MySQL>show variables like '%open%';

have_openssl는 = DISABLED

innodb_open_files = 300

open_files_limit = 8502

table_open_cache = 4096

max_connection = 300

열린 파일 및 열린 파일과 관련이 있습니다. open_files 값이 증가하기 때문에 성능 문제가있을 것입니다. 인텔 ® 제온 ® CPU E3-1220 V2 @ 3.10GHz : 8 GD RAM 및 500 GB 하드 디스크 (프로세서 포함)의 서버입니다. 그것은 전용의 MySQL 서버입니다. 명령 여기

ulimit를 -n;

1024

서버가 자주 걸려 개수

했다. 일부 온라인 도구를 사용하여 일부 매개 변수를 이미 최적화했습니다. 최적화해야 할 것이 무엇인지 알아야합니까? 어떤 경우 열린 파일 수는 줄어들 것입니까? 열려있는 파일 수가 제한되어 있어야합니다. 그렇다면 내 서버에 대한 적절한 제한을 찾는 방법. 분명하지 않은 경우 더 많은 질문을 통해 나를 도우십시오.

+0

이 질문에 속한 [ServerFault] (http://serverfault.com/). – wallyk

답변

2

Opened_files는 마지막으로 mysqld를 다시 시작한 이후로 테이블을 연 횟수를 나타내는 카운터입니다 (마지막 재시작 이후 초 단위의 상태 변수 가동 시간 참조).

Open_files는 카운터가 아닙니다. 현재 열려있는 파일 수입니다.

Opened_files 카운터가 빠르게 증가하면 table_open_cache의 크기를 늘려 성능을 향상시킬 수 있습니다.이 변수의 성능에 미치는 영향 (너무 높은 그것을 설정하는 방법에 대한 몇 가지주의 사항)에 대한 몇 가지 도움말에 대한

, 참조 :


는 :

당신은 카운터의 목적을 오해. 항상 증가합니다. mysqld를 마지막으로 다시 시작한 이후 특정 작업이 발생한 횟수를 계산합니다. 이 경우 테이블에 대한 파일을여십시오.

카운터에 높은 값을 갖는 것이 반드시 문제는 아닙니다. mysqld가 몇 일 또는 몇 주 동안 다시 시작하지 않고 실행되었다는 것을 의미 할 수도있다. 따라서 가동 시간 (즉, Linux 가동 시간이 아닌 MySQL 상태 변수 Uptime)과 비교하여 그 수를 조사해야합니다.

더 중요한 것은 카운터의 증가율이 인 것입니다. 이는 특정 시간 간격으로 얼마나 빠르게 증가하는지 나타냅니다. 이는 테이블을 빠르게 다시 여는 것을 나타낼 수 있습니다.

일반적으로 MySQL은 각 테이블에 대해 열린 테이블 핸들을 유지하므로 테이블을 다시 열지 않아도됩니다. 그러나 그것들은 한정된 숫자만을 가질 수 있습니다. 그것이 바로 table_open_cache입니다. 귀하의 경우, 귀하의 MySQL 인스턴스는 한번에 4096 개의 테이블을 이미 열었다는 것을 "기억"할 수 있습니다. 열려있는 다른 테이블이 필요하면 파일 디스크립터 중 하나를 닫고 요청한 테이블을 엽니 다.

수천 개의 테이블 (또는 테이블 파티션)이 있고 다양한 테이블에 빠르게 액세스하는 경우 테이블 열기 캐시에서 많은 매출을 볼 수 있습니다. 카운터로 표시됩니다. Opened_tables가 빠르게 증가합니다.

따라서 table_open_cache를 크게하면 MySQL이 더 많은 테이블 핸들을 유지할 수 있고 회전율이 감소 할 수 있습니다.

+0

특정 복잡한 쿼리가 응용 프로그램에서 호출 된 경우에만 열린 파일 수가 증가한다는 것을 알게되었습니다. 나는 쿼리를 최적화하려고합니다. 하지만 나는 의심이있다. 열린 파일에 대한 내 목표는 무엇이되어야합니다. 그 숫자를 0으로 가져와야합니다. – siva

+0

"Percona Tools for MySQL"의 보고서에 따르면이 하드웨어 구성에서는 table_open_cache가 더 이상 증가하지 않는다고합니다. 그래서 만약 내가 open_files 수를 0으로 유지할 것인지 복잡한 쿼리를 최적화합니다. 그냥 mysql 성능 튜닝에서 열린 파일 수를 모니터링하는 목적을 이해하고 싶습니다. 참고 : open_file은 한도 아래에서 안정적입니다. 그래서 그 문제는 없습니다. – siva

0

그래서 솔루션은 4096 이상으로 table_open_cache를 늘리거나 쿼리를 최적화 할 수 있도록 내 하드웨어 (특히 RAM)를 늘리는 것입니다.