cron으로 다른 서버에 SSH로 전송하고나면 메모리가 꽉 찹니다
서버를 리부팅 하고 나면 기본적으로 90% 정도의 여유가 생깁니다.(두 대의 서버 모두 )
근데 새벽에 ssh를 통해 다른 서버에 디렉토리를 copy 하도록 cron에 등록을 해놓았습니다.
오전에 확인을 해보면 두대의 서버 메모리가 10% 정도의 여유밖에 안남습니다.
문제는 이 이후에는 swap을 사용하더군요.
swap 사용량이 많은편은 아닙니다만 매번 이러니 괜히 불안하구요.
사용자가 매우 적은데도 이런 상황이면 http로 접근 하는 사용자들이 많아질때엔 버벅거리는 웹서비스를 감수해야한다는 얘긴데
해결방법을 못찾겠네요.
rsync 같은경우는 사용자 디렉토리가 해킹을 당하면
그대로 동일하게 해킹당한 상태로 sync를 시켜버리니 사용을 안합니다.
19:53:56 up 1 day, 13:05, 1 user, load average: 0.19, 0.06, 0.01
77 processes: 76 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states: 0.0% user 0.0% system 0.0% nice 0.0% iowait 100.0% idle
CPU1 states: 0.0% user 0.1% system 0.0% nice 0.0% iowait 99.0% idle
Mem: 1030332k av, 1015852k used, 14480k free, 0k shrd, 139556k buff
789688k actv, 72k in_d, 21340k in_c
Swap: 2097112k av, 33032k used, 2064080k free 810288k cached[/code]
검색해보시면 아시겠지만..free메모리가 남는 메모리가 아닙니다.
검색해보시면 아시겠지만..
free메모리가 남는 메모리가 아닙니다.
free + cache 메모리가 남는 메모리입니다.
cache 메모리는 필요할때 언제든 free로 돌아설수 있씁니다.!
(저런 지조없는 메모리)
------------------------------------------------------------------------------------------------
Life is in 다즐링
아 그리고 swap 은 정말 필요 없는 라이브러리등을가끔 올려두는데
아 그리고 swap 은 정말 필요 없는 라이브러리등을
가끔 올려두는데 씁니다.
즉 몇메가 정도는 써도 됩니다.
1년정도 운영한 써버들의 경우 100메가씩 쓰기도합니다.
------------------------------------------------------------------------------------------------
Life is in 다즐링
[quote]free + cache 메모리가 남는 메모리입니다.[/quo
네 이 부분은 알고 있는데
왜 리부팅을 하고나서 백업하기 전까지는 거의 모든 메모리가 free 상태로 나오는데(스왑도 전혀 사용을 안하구요) 백업이 일어나고나서는 캐쉬가 잡힙니다.
문제는 캐쉬가 잡혀있다가 사용이 되어야 하는데 전혀 사용이 안되면서
swap을 사용하게 되거든요.
문제는 이때부터 사이트가 약간 느리게 뜹니다.
만약 그렇지 않고 말그대로 캐쉬를 쓴다면 걱정도 안하고 기분상 그러려니 하고 놔두겠는데.. ㅠ.ㅠ
top으로 확인하는것 보다는 주로 rrd로 직접 모니터링을 하는데
7일 기준으로 데이타를 확인해봐도 동일한 문제가 발생합니다.
캐쉬는 전혀 사용하는 흔적이 남아있지 않구요.
그래도 역시 제 기분탓일까요? .. ㅠ.ㅠ
swap을 없애보세요
메모리가 부족하지 않은 웹서버라면 swap을 없애보세요
-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.
Re: swap을 없애보세요
언마운트해서 테스트 해보라는 말씀이시죠?
그런데 서비스가 되고있는 서버라서 좀 난감하네요.
그래도 좋은 아이디어 주셔서 감사합니다.
새벽 백업되기 한시간 정도 전에 몰래 테스트를 해봐야겠다는. -_-;
ssh로 백업한다는데 백업이 끝나고 ssh가 메모리를 잡고있는게아
ssh로 백업한다는데 백업이 끝나고 ssh가 메모리를 잡고있는게
아닐까요?? :roll:
[quote="jw0717(우짜라)"]ssh로 백업한다는데 백업이 끝나고
그럴수도 있나요? 전송이 끝나면 세션이 닫히지 않나 싶은데..
만약 그렇다면 전송이 끝난 후 닫힐 수 있는 방법이 있나요?
[quote="오리주둥이"][quote="jw0717(우짜라)"]ssh로
음 메모리를 쓰는데 캐시를 안쓰고 스왑을쓰는건 계속 캐시를 쓰고
또는 잡고있는거 아닌거 하는생각에서 해본이야기입니다.
그리고 그게 다른작업이 아니고 ssh 로 백업을 받은 시점이후부터
면
혹시 ssh session종료와 혹 관계가 있지 않을까하는.... 생각이
죠.
:roll:
위에 덧붙혀cron을 어떤식으로 돌리나요? 쉘스크립트를 돌리는지?
위에 덧붙혀
cron을 어떤식으로 돌리나요? 쉘스크립트를 돌리는지?
그리고 한번은 cron으로 돌리고 한번은
손(^^) 으로 돌려보고 해서 비교해보면 어떨까요??
흐흠...
메모리가 남아 돌아도...
이런 실험을 한번 해 보시기를.. 꼮 SSH가 아니라도 됩니다.
조건: rz/sz이 사용 가능하고 텔넷 클라이언트가 준비 된 상태(이야기 같은 ZMODEM이 되는것으로)
이걸 데이터가 많은 디렉터리에서 한번 해 보세요. 물론 원격으로(텔넷입니다) 접속 해서... 아니면...
흐흠.. 이것도 역시 용량 많은 데서...
그리고 캐쉬란걸 따로 썼다는 기록은 안 남는걸로 알고 있습니다. 위의 것들을... 실행 하시기 전에 메모리가 우선 위의 상태처럼 90%정도 남아 있는지 확인 하시고 그 후에 저렇게 해 보세요... 물론, 한쪽이 윈도우즈라면 메모리 양 보기가 좀 그러니깐(가능은 하지만) 역시 리눅스라면 ztelnet를 써서 실험 할 수 있겠죠 음.
뭔 소리 적고 가는지 저도 정신 없습니다.
행복하세요...
이여송 사도요한 드림.
사람천사
마찬가지네요.질문올릴때 메모리/스왑 내용입니다.--------
마찬가지네요.
질문올릴때 메모리/스왑 내용입니다.
-----------------------------------------------------------------------------
Mem: 1030332k av, 1015852k used, 14480k free, 0k shrd, 139556k buff
789688k actv, 72k in_d, 21340k in_c
Swap: 2097112k av, 33032k used, 2064080k free 810288k cached
리부팅 후 수동으로 scp로 옮겨보았는데 역시나 거의 동일한 현상이 나오네요.
-----------------------------------------------------------------------------
Mem: 1030332k av, 1018008k used, 12324k free, 0k shrd, 35572k buff
339360k actv, 304k in_d, 613180k in_c
Swap: 2097112k av, 804k used, 2096308k free 909124k cached
언젠간 꼭 이유를 알아낼테다.
흠...
지금 저는 데비안을 쓰고 있습니다.. 그런데 그렇게 하고 나서 스왑이 되면... 그 스왑된 용량이 언제나 거의 비슷하지 않나요? 저같은 경우는 그런 식으로 스왑이 되어서 약 2~3MB정도의 스왑 공간을 차지 하고 있습니다 늘.. 그리고 가만히 둬도 스왑이 되는데 그것 또한 그렇습니다.
한번 확인 해 보시기를... 아마 늘 거의 비슷한 용량으로 스왑 되고 있을 겁니다.
FTP등을 사용하여 파일을 다운로드 하는것 만으로도 매모리를 저렇게 충분히 만들 수 있고 컴파일 한번 하는걸로도 충분히 가능합니다. 특히 sz으로 sz 1 2 3 4 5 6 7 8 9 10 이런 식으로 파일을 쭉 지정 해 주고 텔넷에서 서버의 파일을 받아도... 물론 그렇죠... 이건 프로그램이 파일을 열고 접근 할 때 그것을 메모리에 캐쉬 해 두는 경우일 겁니다. 정 마음에 안 드신다면.. 글세요... 뭐라고 말씀 드릴 수 없군요.. 전 그래도 그러려니 하고 쓰고 있는 터라.. 지금까지 별 문제가 없었거든요 허허허.
그럼 행복하시길..
이여송 사도요한 드림.
PS:결론적으로 CRON때문은 아닐겁니다.
사람천사
음.. 관련해서 예전에 조사한적이 있습니다.sysctl 값에 보시
음.. 관련해서 예전에 조사한적이 있습니다.
sysctl 값에 보시면 이놈이 있지요.
vm.dirty_ratio = 40
( 사용하시는 배포판 , 커널에 따라 틀립니다.
제 배포판은 centos 4.2 입니다 )
저놈이 의미하는 값은 메모리에 들고 있는 캐쉬들이랑 관계가 있던걸로 기억납니다 -_-;
( 저거 한지 대충 오래되서 다 까먹어서 -_-;; )
찻아보면 나오기는 할텐데 vm 값들을 조정해주면 관련해서
원하시는대로(?) 세팅가능할껍니다.
참고로 centos 4.2 디폴트 값일껍니다.(?)
------------------------------------------------------------------------------------------------
Life is in 다즐링
[quote="다즐링"]음.. 관련해서 예전에 조사한적이 있습니다.
전혀 손 안댄(즉 설치하자마자) RHEL4 update 2버전의 커널 파라미터값이 다음과 같네요.
vm.min_free_kbytes = 949 <-이 부분만 다르군요. -_-a;
이 부분은 사용하는 물리적 메모리 사이즈에 따라서 다른가봅니다. -_-a;
음.. 그렇군요.일단 세팅하기전에 rdist로 세팅을 해볼 생각입니다
음.. 그렇군요.
일단 세팅하기전에 rdist로 세팅을 해볼 생각입니다.
IDC랑 얘기를 해봤는데 (직원) OS자체의 버그일 수 도 있지 않을까 하는
조심스런 의견도 나왔네요. ^^
1. scp는 원격 카피방식이기때문에 카피가 끝나면 세션이 닫혀야 하고
그렇다면 메모리를 반환해야 하는것이 정상 아닌가.
2. OS의 버그 이전에 ssh가 (scp) 가지고 있는 버그는 없을까. 버전업데이트를 해보는 방법도 생각해보자.
3. 위의 방법으로 해결이 안된다면 rsync로 해보자
( 이 방법은 백업이라기 보다는 미러링의 개념으로 봐야하기때문에
유저의 디렉토리가 해킹당하면 그대로 미러링 되므로 증분백업의 해결방식으로는 소용이 없으므로 배재)
4. rdist로 진행을 해보고 결과를 지켜본다.
5. 최후의 수단으로 커널업그레이드를 해본다. ( 여기까지 가고 싶지는 않습니다. ㅠ.ㅠ 해본적도 없고.. 하다가 맛가면.. 추륵 ㅜ.ㅡ)
일단 현재의 진행상황이네요.
해결책을 찾으면 올려놓겠습니다. ^^
그래도 안되면 다즐링님과 야동꿀벌님의 방법을 해보도록... 쿨럭;
댓글 달기