40/sec에500/sec
소개
, 제목에의해 놀래는가? 우리가
초당500의 기록에 초당 빈약한
기록40취급에서 범위성 j인x을 부순 까 라고의
잘, 이것은 투어 이다. 조심하십시요, 우리가
직면한 문제의 최대량은 똑바로 앞으로
이었다, 그래서 경험된 사람은 이것을 불필요한
발견한.
내용
*우리가 있은 곳에1.0?
1.1 기억은 하늘을 명중한다
1.2낮은 공정 속도
1.3 자료 손실은:-(
1.4 Mysql은 우리들을 내린다
1.5 느린 웹 클라이언트
*열반에2.0도로
2.1 통제 기억!
2.2 공정 속도를 합리화함
2.3 무슨 자료 손실uh-uh?
2.4 조정 구조화 질의어 질문
2.5 조정 데이타베이스 개요
2.5 Mysql은 우리들이 앞서갈것을!
2.6 빨리... 빨리 웹 클라이언트
3.0*최종선
우리는 어디에 있었는가?
처음에 우리는40의 기록/sec까지 단 오를
수 있은 체계가 있었다. 나는 기록의
이상적인 비율 이어야 한다 조차 "무엇에 관하여
면담을, 회고할 수 있었다? ". 40/sec이
단순한 방호벽을 위해 이상적인 비율 이던 것을
마지막으로 우리는 결정했다. 이렇게 우리가
나가야 할 때, 우리는atleast3개의 방호벽을
지원한것을 필요로 했다. 지금부터120/sec이
이상적인 비율 이을텐데 것을 우리는
결정했다. 우리의competitor(s)에서 자료에
기초를 둬 우리는240/sec의 주위에, 그들 지원할 수
있은 결론에 왔다. 그것이 그렇었다 것 을
우리는 생각했다! 우리의 첫번째
방출 그냥. 모든 경쟁자가 방호벽의
수를 말했기 때문에 그는 비율에 그러나 아니다
지원했다.
기억은 하늘을 명중한다
우리의 기억은512MB에 항상 하늘을
조차 명중하고 있었다! (OutOfMemory예외)
우리는 우리가 오랫동안을 위해 도주할
생성한images.But의cewolf(s)inmemory숨기를
비난했다! 우리가 클라이언트를
연결했다 사정 또는 아니다 우리는 편평한
2, 3일 최대3-4일안에 하늘을 명중했었다!
우리가 아주 높은rates(then)에 자료를 보낼 때
재미있, 이것은50/sec의 주위에의 재생
가능했다. 너는 그것을 권리, 지붕을
명중할 까지 성장하는 무제한 완충기
짐작했다.
낮은 공정 속도
우리는40/sec의 비율에 기록을
가공하고 있었다. 우리는dataobject(s)의 대량
갱신을 이용하고 있었다. 그러나 그것은
예기한 속도를 주지 않았다! 이것때문에
우리는 사재기 기억의 결과로 기억안에 자료를
저장한것을 시작했다!
자료 손실은:-(
최고 속도로 우리는 많은packet(s)을
놓쳤었다. 우리는 조금 자료 손실이
있는것을 보였다, 그러나 저것은 기억 돼지안에
유래했다. 버퍼 크기를 제한하기 위하여
꼬집는 어떤에 우리는 아주 고가에 대략20%의
꾸준한 자료 손실이 있는 시작했다.
Mysql은 우리들을 내린다
우리는 우리가 대략140MB의 기록
파일을 수입한 거친 시간을 직면하고 있었다.
Mysql은, 기계에 의하여 시작된
포복hog시작하고 때때로 그것 동등한
멈춘responding.Above모두, 우리는deadlock(s)과
거래timeout(s)을 얻는 시작했다. 최후에
체계의 응답성을 감소한 까 어느것이.
느린 웹 클라이언트
여기 다시 우리는 우리가 체계를
내리고 있던 많은 다른 요인 있었다 고 사실을
묵살하는 좁은 통로로 페이지안에 보인 도표의
수를 비난했다. 페이지는 인터넷 데이터
센터에 4 일다음에6-8의 도표 그리고 테이블에
페이지를 위해 짐에게30초를 걸렸었다.
열반에 도로
통제 기억!
우리는10,000의 버퍼 크기에 한계를
둔것을 해봤다, 그러나 오랫동안을 위해
계속된다. 디자인안에 중요한 하자는
주변에10000의 완충기가 충분할 것을 우리가
추측했다 고 이었다,i.e우리는 가공 기록
전에10,1000범위의 완충기 이을텐데.
인라인으로 원리에 "무언가가 틀리게 그것 갈 수
있는 잘못될 것이다!" 그것은 잘못되었다.
우리는 자료를 풀n 시작했다. 자료가
평면 파일으로 내버리고 "infile" 짐 자료을
사용하여 데이타베이스로 적재될텐데 까 그
안에서, 우리가 평면 파일 기초를 둔 숨기기에
간것을 결정한Subsesquently. 이것은 너가
점검에 또한infile짐 자료에 약간 가능한
최적화를 원한 데이타베이스 운전사경유
대량 삽입보다는 빨리 많은 시간 이었다.
이것은 익지않는 기록의 버퍼 크기를
증가하기의 우리의 문제를 해결했다.
우리가 직면한 제 2 문제는
기계장치를 숨기는 기억안에cewolf(s)의 증가
이었다. 과태에 의하여 그것은 기억안에 심상
목표를 숨기는 목표높은 쪽으로 청소안에
어떤 문제 이기 위하여 거기서 보인
"TransientSessionStorage"을, 사용했다,rerferences이
잃을 후에도! 이렇게 현지 파일안에 심상
목표를 저장하는 우리는 "FileStorage" 작은
실시를 썼다. 그리고 요구as.and.when들어온다
봉사되십시요. 더욱, 우리는
대청소10mins보다는 오래 되는
부패하는images(심상에 또한 대청소
기계장치를implmentated).
우리가 여기 발견한 다른 재미있는
양상은, 단단하게 청소되었다 위로 쓰레기
수거원이 낮은 우선권 그래서 각을 위해 창조된
목표를 기록 비치하고 있었다 고 없었다. 여기
문제의 크기를 설명하는 조금 수학은 있는다.
우리가 우리가~20objects(hashmap을 창조한
통나무 기록을 받는다 언제든지, 1 제 2을
위해500/sec의 비율에 끈etc.을) 이렇게, 목표의 수
있었다10,000(20*500*1)tokenized. 무거운 가공
쓰레기 수거원에 만기가 된 결코 대청소에
기회를 목표 있지 않았다. 우리가 해야 한
이렇게 모두는 목표 참고에 작은 비틀기, 우리
다만 할당했다 "영"을 이었다. Voila!
쓰레기 수거원은 결코 고문해 나는
짐작한다 없었다; -)
공정 속도를 합리화함
공정 속도는 우리는 단단하게
통나무 기록의 조차 작은 폭발을 저항할 수
있지 않은 것을 의미하는 빈약한40/sec에 있었다!
기억 통제는 우리들에게 어떤 위안을 줬다,
그러나 실제적인 문제는 기록에 경보 여과기의
신청에 이었다. 우리는 각 기록을 위해
주변에20의 재산이, 우리 모든 재산을 위해 찾는
사용했다 있었다. 우리는 우리는 표준이를
위해 있은 그 재산을 위해 성냥에 실시를
변화했다! 더욱, 우리는 경보 여과기
가공안에 또한 기억 누출이 있었다. 우리는
영원히 성장한 큐를 유지했다. 목표를
형성하기 위하여 기록의 재 분석을 기피하기
위하여 이렇게 우리는 내버리는 평면 파일
목표를 유지해야 했다! 더욱 우리가 경보
표준을 형성해 달라고 하지 않을 때라도,
우리는 재산의 각자를 위해 성냥을 위해 찾기의
행위를 했었다.
무슨 자료 손실uh-uh?
우리가 고치면 하자마자 기억은, 우리 결코
잃었다 자료를 발행하지 않는다i.e평면
파일으로 내버리는 자료를 받기안에! 저것에
더하여 자료를 내버리고 있는 동안 간접비를
기피하기 위하여 우리는 익지않는 테이블안에 2
색인을 제거해야 했다. 우리 3개의 가능한
가치의 최대가 있을 수 있은 란에는을
위해hadd색인. 삽입이 실제적으로 더 느린
시키고 유용하지 않은 까 어느것에 의하여이.
조정 구조화 질의어 질문
너의 질문은 성과에 너의 열쇠 이다.
너가 문제점을 못을 박는 시작하면 하자마자,
너가 조차 테이블을 d어 정상화해야 한 것을 너는
볼 것이다. 우리는 그것을 했다! 여기
중요한learnings의 어떤은 있는다:
* mysql질문이 일하는 까 라고
확인하기 위하여 사용은 "테이블"을 분석한다.
테이블 수준 검사etc.을 사용하고
있다i.e정확한 색인을 사용하고 있다 질문이
느린 까 왜 이것은 너에게 대략 통찰할 것이다.
* 너가 단순한 테이블안에50,000의
기록의 순서안에 거대한 자료를 다룰 때 결코
감소는 않않는다. "하락을 하는" 항상 시험은
가능한한 많이 탁상에 놓는다. 가능하지
않으면, 너의 단 탈출구가 이다 고, 너의 개요를
다시 설계하십시요!
* join(s)을, d어 정상화하게
두려워한다 (i.e란 가치를 중복하십시요)
기피한다join(s)을 가능한한 많이, 그들 너의
질문을 내린것을 간다 기피하십시요. 1개의
숨긴 이점은 그들이 너의 질문안에 간명을
부과한다 고 사실 이다.
* 너가 대량 자료를 다루면,
항상 사용 "infile"은 짐 자료 거기서 2개의
선택권 여기, 지방 주민 및 리모트 이다.
mysql및 신청이 동일한 기계 다르게 사용
리모트안에 있으면 사용 지방 주민.
* 2개 3개의 더 간단한 질문으로
너의 복잡한 질문을 쪼갠것을 해보십시요.
이 접근안에 이점은mysql자원이 전과정을 위해
위로hogged고 이다. 임시 테이블을 이용하기 위하여
가십시요. 사용의 대신에5-6저 쪽에에
뼘으로 재는 단순한 질문은 탁상에 놓는다.
* 너가 자료의 거대한 총계를
다룰 때,i.e너는 회분식 공정에proces에
말한다50,000의 기록 또는 한계을 사용하여
단순한 질문 시험안에 더를 기록 원한다.
이것은 너가 새로울 고도에 체계를 오를것을
돕l 것이다
* i.e"n" 테이블저 쪽에에
뼘으로 재는 큰 그들의 대신에 항상 사용 더
작은transaction(s). 이것은 위로 간단한 질문을
위해 체계의 느림을 조차 일으키는 원인이
된mysql자원을 잠근다,
* 색인 외국 열쇠에 란에
사용join(s)
* 사용자 인터페이스에서
질문에는 표준이 있는 것을 지키고십시요 또는
제한하십시요.
* 표준 란이 색인을 붙이는 것을
또한 지키십시요
* mysql이 유형 던지기를 하기
때문에, 따옴표안에 구조화 질의어 표준안에
수치를 있지 말라
*임시 테이블을 가능한한 많이
이용하고, 그것을... 떨어뜨리십시요
* select/delete의 삽입은 두 배
테이블 자물쇠... 명심한다... 이다
* 너가 데이타베이스에 너의
갱신의 주파수에mysql데이타베이스를 고통을
주지 않는다 고 포획 배려. 우리는 우리가 후에
각300의 기록 데이타베이스에 내버렸었다
전형적인 케이스가 있었다. 이렇게
우리가500/sec을 위해 시험 시작할 때 우리는mysql이
문자로 우리들을 아래로 있있던 것을 본
시작했다. 500/sec의
비율에typicall은mysql데이타베이스에 거기서의 "짐
자료infile" 요구 각 초 이는 것을 저것은 우리가
실현한 때 이다. 3 분다음에 기록 오히려300의
기록을 내버리기 위하여 이렇게 우리는 변화해야
했다.
조정 데이타베이스 개요
너가 자료의 거대한 총계를 다룰
때, 너가 너의 자료를 분할한 것을 항상
지키십시요. 저것은 범위성에 너의 도로 이다.
할말 10lakhs에 단순한 테이블은 결코 오를
수 있지 않는다. 너가 보고를 위해 질문을
수행할것을 예정할 때. 항상 실제적인
자료를 위해 테이블, 익지않는 테이블 것 및
보고tables(을 위해 다른 세트의 2개 수준을
사용자 인터페이스가 위에 질문하는 테이블
있으십시요!) 너의 보고 테이블에 자료가
한계저쪽에 결코 성장하지 않는 것을 항상
지키십시요. 너를Oracle의 너를 이용하기 위하여
계획하고 있다 표준에 기초를 두는 분할을
철저히 시험한 할 수 있는다 넣으십시요.
그러나 불운하게mysql은 저것을 지원하지
않는다. 이렇게 우리는 저것을 해야 할 것이다.
너는 준 표준 정상으로 시간의 세트를
위해 헤더 정보가i.e찾기 위하여 탁상에 놓는,
있는 메타산 테이블을 유지하십시요.
* 우리는 우리의 데이타베이스 개요를
통해서 걸어야 하고 몇몇 색인을 추가하기
위하여 추가하고, 어떤을 삭제하고
값이비싸join(s)을 제거하기 위하여
중복한column(s)을 고른다.
* InnoDB이 체계에 실제적으로
간접비 이기 때문에 앞으로 우리는 감MyISAM에
익지않는 테이블, 그래서 우리를 있는 저것을
변화했다 그것을 실현했다
* 우리는 안으로 관련시킨
정체되는 테이블안에 줄의 수를 감소하기의
넓이에 또한 결합한다 갔다
* 데이타베이스 테이블안에
영은 어떤 성과를 명중하는 일으키는 원인이
된것을 보인다, 그래서 그들을 기피하십시요
* 란을 위해 색인을 있지 말라
2-3의 가치를 허용한
* 교차하는 체크 너의
테이블안에 각 색인을 위해 필요, 그들은
값이비싸다. 테이블이InnoDB그때 두 배
체크의 그들의 필요 이으면. InnoDB테이블이
주변에 가지고 가기것을 보이기
때문에10-15은MyISAM테이블의 크기를 번.
* 대다수의 있는다 언제든지
사용MyISAM, 어느 쪽이든 (또는 삽입
선정하십시요) 질문의 한. 삽입 및
가려내는 것 그때 이기 위하여 가면InnoDB으로
그것을 있는것은 낫다
Mysql은 우리들이 앞서갈!
너가 너의queries/schemas및 너의
부호를fine-tune직후에 너의mysql서버를
조정하십시요. 단 그때 너는 성과안에 지각
개선을 볼 수 있는다. 여기 경편한 들어오는
매개변수의 어떤은 있는다:
* 너의 질문을 빨리 --InnoDB을
위해innodb_buffer_pool_size=64M과 사용한 위하여
--MyISAM을 위해 열쇠bufersize=32M를 수행하는
가능하게 할 것이다 버퍼 풀 크기를
사용하십시요
* 동등한 간단한 질문은
예기되는보다는 시간을 더 걸린 시작했다.
우리는 실제적으로 당혹게했다!
mysql이 위에 삽입 시작하는 어떤 테이블의
색인을 적재한것을 보이는 것을 우리는
실현했다. 전형적으로 일어난 무엇이
이렇게, 어떤 간단한 질문 걸렸다
주변에1-2sec을 이었다5-10의 줄에 테이블에.
더 분석에 우리는 고가 간단한 질문의 바로
전에, 일어난 "짐 자료infile" 발견했다.
innodb을 위해 버퍼 크기 및MyISAM이 2개의 다른
윤곽 이기 때문에 우리가MyISAM유형에 익지않는
테이블을 변화할 때 이것은 실종되었다.
구성 매개변수를 위해 여기 보십시요.
끝: 뒤에 오는 선택권에 시작하기
위하여 너의mysql을 시작하십시요 -- 통나무
과실은 이것 오류 기록을 가능하게 할 것이다
빨리... 빨리 웹 클라이언트
사용자 인터페이스는 어떤
제품에 열쇠, 페이지의 특별하게 감지한 속도
더 중요하다 이다! 여기 경편한
들어온learnings과 해결책의 명부는 있는다:
* 너의 자료가 할말을 위해3-5분
변화하기 위하여 가지 않으면, 너의 클라이언트 측
페이지를 숨기는것은 낫다
* 너의 페이지에게 감지한
f앗t넜을 주는Iframe(s)for안 도표 등등을 이용하기
위하여 가십시요. 아직도 사용을 j아v앗cr입t에
의하여 기초를 두는 만족한 선적 기계장치
나아지십시요. 이것은 너는 동일한 페이지안에
할말3+도표가 있을 때 너가 하고 싶는 무언가 이다.
* 단 모든 내용이 서버에서 받을
때Internetexplorer은 전체 페이지를 보인다.
이렇게 만족한 선적을 위해iframes또는
j아v앗cr입t을 사용하는것은 적당하다.
* 결코 전투근무지원의
사용multiple/duplicate입장은html페이지안에
신청하지 않는다. Internetexplorer은
분리되는 입장으로 각 전투근무지원 파일을
적재한것을 가고 완전한 페이지에 적용한다!
체계가 최종 결과에 의하여 너의 질문
및 개요 더 느린 시킨다! 그들을 첫째로
고치고 그때 데이타베이스를 비난하십시요!
또한 보십시요
* 고성능Mysql
* 질문 성과
* 질문을 설명하십시요
* 낙관 질문
* InnoDB조정
* 조정Mysql
종류: 방호벽 해석기 | 성과는 이 페이지를 이었다 최후
수정18:00,2005년 8월31일 기울인다.
-Ramesh-
ꀰ사냴ꀰ: Messaggiamo.Com
Related:
» Seo Elite: New Seo Software!
» AntiSpywareBOT
» Reverse Mobile
» Error Nuker
샹냈 삤퀰 삻쁄 쁔냜
ꃀ큘쁘 샹사쁴킸샐쁴 뀸쀜끼 삔ꀀ 샀ꀈ 냹삥!
샹냈 삤퀰샐ꂌ ꀰ사끼 쀜삜큘ꀰ
쁄냈삔 냱끝 큄쀘! ꃀ큘쁘 삑생쁄 삑쀱큘ꃠ쁴 뀸쀜낔 Messaggiamo.Com 뀔뀉킠났!