cache 메모리 방출 을 통 해 ubuntu 다운 문제 해결

4495 단어 linuxshell
1. ubuntu 다운
작업 기 계 는 ubuntu 시스템 으로 16G 의 물리 적 메모 리 를 갖 추고 있다.이치 대로 말 하면 이 메모 리 는 이미 적지 않 지만 동시에 windows 가상 기 를 운행 하기 때문에 기계 의 자원 이 약간 부족 할 것 이다.매번 시스템 이 얼마 운행 되 지 않 고 많 으 면 3, 5 일, 적 으 면 하루 이틀 동안 시스템 이 끊 겨 죽 을 지경 이다.어떤 조작 도 이 문 제 를 해결 할 수 없다. 매번 대 법 을 다시 시작 하고 파워 키 를 길 게 눌 러 기 계 를 다시 시작 할 수 밖 에 없다.마침내 어느 날 하루 에 두 번 재 개 된 후 본인 은 정말 참 을 수 없어 서 이 문 제 를 해결 하기 로 결심 했다.
이전의 몇 번 의 경험 을 보면 매번 다운 되 기 전에 free 로 기계 의 메모리 사용 상황 을 살 펴 보면 cache 의 메모리 가 매우 크다 는 것 을 발견 하고 메모리 가 부족 한 귀신 이 라 고 초보 적 으로 의심 했다.Liux 시스템 에 cache 메모리 방출 전략 이 있 지만 Liux 커 널 이라는 것 을 누가 알 겠 습 니까?좋아, 그럼 우리 스 크 립 트 를 써 서 캐 치 를 강제로 풀 어 주자...
2. cache 메모리 사용
간단 한 스 크 립 트 를 썼 습 니 다:
#!/bin/bash                                                                                                                                                                                                 

sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
sync && echo 2 | sudo tee /proc/sys/vm/drop_caches
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

그리고 crontab 에 넣 고 한 시간 에 한 번 씩 실행 하고 정시 에 cache 를 방출 합 니 다.며칠 후 대본 이 효과 가 없 는 걸 발 견 했 어 요...메모리 사용 상황 을 볼 때마다 cache 가 풀 리 지 않 았 습 니 다.다운 되 나, 다운 되 나...생각해 보 니 /proc/sys/vm/drop_caches 이 경 로 는 일반 계 정 이 조작 할 수 있 는 권한 이 없 을 것 같 습 니 다.이 스 크 립 트 를 루트 의 crontab 에 과감하게 추가 하여 시간 당 한 번 씩 달 립 니 다.효과 가 있 었 다 는 걸...지난번 강제 재 개 2 주 만 에 완벽 하 게 해결...
3. sync 명령
sync 명령 은 변 경 된 내용 을 즉시 디스크 에 기록 하고 초 블록 정 보 를 업데이트 하 는 데 사 용 됩 니 다.Linux/Unix 시스템 에 서 는 파일 이나 데이터 처리 과정 에서 메모리 버퍼 에 먼저 넣 고 적당 한 때 에 디스크 에 기록 하여 시스템 운행 효율 을 높 인 다.sync 명령 은 메모리 버퍼 의 데 이 터 를 디스크 에 즉시 기록 하도록 강제 할 수 있 습 니 다.사용 자 는 보통 sync 명령 을 실행 하지 않 아 도 됩 니 다. 시스템 은 update 나 bdflush 작업 을 자동 으로 실행 하여 버퍼 의 데 이 터 를 디스크 에 기록 합 니 다.update 나 bdflush 가 실행 되 지 않 거나 사용자 가 비정상적 으로 꺼 져 야 할 때 만 sync 명령 을 수 동 으로 실행 해 야 합 니 다.
4. cache 메모리 와 buffer 메모리 의 차이
메모리 보기 일반 free 명령 사용:
xxx@xxx:~/xxx/code/shell/base$ free -m
1              total       used       free     shared    buffers     cached
2 Mem:         15929      11503       4425        991         35       1328
3 -/+ buffers/cache:      10139       5789
4 Swap:        16263          5      16258

free 의 출력 은 모두 네 줄 이 있 습 니 다. 네 번 째 행위 교환 구역 의 정 보 는 교환 총량 (totalk), 사용량 (used) 과 얼마나 남 은 교환 구역 (free) 입 니 다. 이것 은 비교적 명확 하고 많 지 않 습 니 다.
free 출력 지 두 번 째 줄 과 세 번 째 줄 은 비교적 사람 을 현혹 시킨다.이 두 줄 은 모두 메모리 사용 상황 을 설명 하 는 것 이다.첫 번 째 열 은 총량 (totalk) 이 고, 두 번 째 열 은 사용량 (used) 이 며, 세 번 째 열 은 사용량 (free) 이다.
두 번 째 줄 의 출력 은 운영 체제 (OS) 에서 보 았 다.OS 차원 에서 봤 을 때 말이다.그 중에서 Mem shared 는 몇 개의 프로 세 스 가 공유 하 는 메모 리 를 표시 합 니 다.Mem buffers 는 OS buffer 에 저 장 된 메모 리 를, Mem cached 는 OS cache 에 저 장 된 메모 리 를 나 타 냅 니 다.buffers 와 cached 의 차 이 는 다음 과 같다. buffer 는 disk (블록 장치) 에 출력 할 데 이 터 를 저장 하 는 데 사용 되 고 cache 는 disk 에서 읽 은 데 이 터 를 저장 하 는 데 사용 된다.이 두 가 지 는 IO 성능 을 향상 시 키 고 OS 에서 관리 하기 위 한 것 이다.Linux 와 다른 성숙 한 운영 체제 (예 를 들 어 windows) 는 IO read 의 성능 을 향상 시 키 기 위해 항상 cache 데 이 터 를 많이 해 야 하기 때문에 cache 데 이 터 를 많이 해 야 합 니 다.
세 번 째 줄 은 응용 프로그램의 측면 에서 시스템 메모리 의 사용 상황 을 보 는 것 이다.시스템 cache 와 buffer 가 사용 하 는 메모리 가 빠르게 회수 되 기 때문에 세 번 째 줄 은 free 열 에 대응 하 는 값 이 매우 큽 니 다.
마지막 으로 ubuntu 다운 케이스 를 정리 해 보면 시스템 cache 의 메모리 가 너무 많아 서 제때에 방출 되 지 않 아 시스템 이 다운 되 었 습 니 다!해결 방안 은 우리 가 스 크 립 트 를 써 서 정기 적 으로 cache 메모 리 를 방출 하면 다운 되 는 것 을 피 할 수 있다 는 것 이다!

좋은 웹페이지 즐겨찾기