볼 때 마다 가슴이 아픈 고객사 서버.......
2015.01.15 14:50
제가 관리하는 서버님들중 한분이십니다............
물론 제가 셋팅하고 솔루션 설치해서 납품한건 아니고 전임자가 도망가서 인수인계 받은거.
지금은 어쩔 수 없이 SQL 쪽 최대 가용 메모리를 제한 잡아두고 쓰고는 있지만....
애초에 이렇게 OS 설치해 달라고 한 고객사나.......
그걸 군말없이 해준 저희 회사 사람이나.....
사용자 좀 몰리면(한 500명) 그냥 톰캣이 침대축구 구사합니다.
누워서 안일어나요 ㅜ.ㅜ CMD창 멈춘채로 웹이 죽더군요
메모리는 빌빌거리고......
이거 32비트긴 해도 메모리 다 인식하게 할 수 있는 방법 없나요?
OS 다시 설치 하는건 -_- 라이센스비용 어쩌고 하면서 고객사에서 반대............
근데 고객사에서는 12GB 메모리를 다 사용할 수 있는걸로 알 고 있는건 함정.
하지만 그걸 확인하러 서버실에 와볼 일이 절대 없다는 점도 함정....
코멘트 45
-
종다리
01.15 15:13
-
김강욱
01.15 16:04
4G ㅋㅋㅋㅋㅋ
-
김강욱
01.15 16:10
Virtual Box에 Centos 깔고 Tomcat 쓰는게 훨씬 나은 상황인듯 합니다.
아~...그래도 메모리 문제는 해결이 안되는 구나. -_-;;;;
그래도 WAS만 돌리는 상황에 서멀티 가상 서버가 아니라면 왠만큼은 돌아갈텐데~
메모리 먹는 놈들 최대한 잡아 족쳐 보심이~
페이지 파일도 메모리 디스크 만들어서 거기다 돌리고.
* CPU 만 백만원이 넘다니...-_-;
* 서버 스펙이 모자라서 새로 사야 한다고 얘기해주세요. ^^;;;;;;
-
고객사에게 저렇게 사람이 몰려서 서버님이 침대축구를 시전하실때의 손실비용과 운영체제를 64비트로 도입하는데의 추가비용을 계산해서 보여주시는 편이 좀 더 효과적이라 생각될 상황으로 보입니다만...
아니면 일부 미사용 메모리를 램디스크로 구축해주는 법이 있으니 그걸 시전해서 램디스크에 페이지 파일을 상주시켜 보실 수도 있구요.
일단 64bit 리눅스 설치후 왠만한 서버나 프로그램은 전부 리눅스에서 가용시키고 고객사가 사용하기 위해서 32bit윈도우즈가 필요한 것들만 가상화환경 꾸려주어서 그 위에 32bit윈도우즈를 올려서 돌려 주시거나.... 이런 방법들 밖에 없어보입니다.
예전에 케퍽에서 올라왔던 어떤 외국동영상이 생각나네요....; 개발자는 이러저러해서 안된다는걸 복터지게 설명하고 고객사는 그냥 환상의 판타지를 달리고... -
유태신
01.15 17:04
64비트로 옮겨가지 않는 이상.....너무 제한적이네요.... 돈 안쓰는 방법은...1. 남는 메모리를 램디스크로 만든 다음, 가상메모리 영역을 램디스크로 바꾼다.2. 자주 읽고 쓰는 파일과 실행파일을 램디스크로 이동시킨다. 단, 시스템을 꺼야할 때에는 반드시 하드디스크에 백업을... (배치파일을 만들어 두면 편합니다.) 하지만, 자칫하면 대형 사고가 .... 쩌비...이 정도? -
나리
01.15 17:33
시퓨가 아깝네요~ -
가상머신으로 리눅스 돌리는 법과 램디스크 사용하는걸 좀 연구해 봐야 겠네요
쪼랩인지라 -_-;;; 사수도 없고.....
죽겠심더.....
-
김강욱
01.15 17:45
뭘 해주셔야 하는 입장인건가요?
상면 / 호스팅만 하시는 것 아니신지?
그리고 잘 알아보시면 64 bit 그냥 쓰실 수도 있을지 몰라요. MS 에 한번 물어보세요.
-
호스팅은 아니구요 서버에 OS 깔고 MSSQL 도 깔고 셋팅 다 한 다음에
우리 솔루션 커스터마이징해서 올려주고 운영과 유지보수까지 하고 있습니다.
SI 와 SM 을 같이 하고 있는거라고 보시면 될듯..... 제한적으로 NI 역할도 해야 하구요
-
김강욱
01.15 18:05
1) 만능이시군요. ㅋㅋ
2) 하여간 깊게 관여되시는 상황이라면 Centos 권장 드려요. 저도 깊게는 잘 모르지만 짬짬이 지원 가능할 것 같구요.
만약 하실거면 전략 좀 짜야~
3) 다른 건 대안이 안나오네요.
-
종다리
01.15 23:36
라이선스가 문제가 아니고 마이그래이션이 문제입니다... 시스템을 교체하고 여태 운영하던 데이터들을 바로 적용한다는게 문제라는거죠... 게다가... 보조하는 시스템 없이 몇일동안 서비스를 멈출수는 없다는거가 제일 큰문제라는거죠...
-
김강욱
01.16 01:09
맞네요.
그래서 말씀하신 부분같은 게 작전이 필요한 것 같습니다.
우리끼리 얘기해봐서야 답은 안나오겠지만, 일단은 지금 서비스하고 있는 양 자체는 굉장히 작다는 추측을 전제로...대체 서버 마련 및 마이그레이션 => 실서버 OS 교체 => 재 마이이그레이션 이겠습니다.
저기서 문제는 대체 서버 마련인데, 지금 정도 서비스 서버는 쉽게 마련되지 않을까 싶기도 해서요.
-
RuBisCO
01.15 17:44
대체 데탑에도 64비트를 올리는데 저건 무슨 배짱인지 ㄷㄷㄷ -
윈도우 서버 2008 32BIT 라이센스 남는걸 재활용 하기 위해 저렇게 한거라고 알고 있습니다만.....
-
종다리
01.15 23:37
서버는 Bit단위로도 라이선스 비용이 발생되나봅니다..
-
DoNotDisturb
01.15 18:44
job을 처리하는 프로세스를 multi-process로 돌리면 되겠네요. -
김강욱
01.15 18:54
아마 톰캣이 침대에 누워 있는 이유가 메모리 부족으로 발생하는 FGC와 그로 인한 스와핑이 엄청 느린 것 같은데...일단 불필요한 서비스 중단해서 메모리 확보 및 스와핑시 Disk I/O 대신 Memory I/O 토록 Ram Disk. 어차피 CPU 는 남아도니.
-
티쓰리유저
01.15 19:05
아.............저정도는 아니지만, 우리도 비슷한 상황인지라.. 쩌비.. 그런데 저 고객사를 이해할 수 있을 것 같음.. 솔루션을 만들었는데 오랜전에 만들어져서 전부 32Bit 에서 만들어진 것이라 다시 빌드하고 테스트할 여력이 없는 것 같아요.. 그런데 이전 서버는 죽었고,, 그래서 아무것도 모르고 그냥 최고급으로 깔아놓는 것 같아요..
그런데 저희도 DB를 32bit로 쓰다가 분명 64bit로 넘어가면서 아무런 문제가 없을 것이라는 말을 여기저기서 들었으나,, 큰 문제는 없었는데, 그래도 작은 문제들이 조금씩 나오더군요..
-
왕초보
01.16 02:22
이부분이 제일 큰 문제네요. 64비트로 갔을때 나올 수 밖에 없는 자잘한 문제들은 어떻게 할 것이냐..
-
정말 허탈한 웃음 밖에 안나오네요;;;
-
유태신
01.15 19:42
Windows 2012 Server 64bit 평가판을 쓰는 것도 방법입니다..이게 180일 즉, 무려 6개월이나 성능 차별 없이 무료로 쓸 수 있고요...놀라운 건... 6 개월 지났을 때, 마이크로소프트 사이트에서 product key만 다시 새로 받아서 등록하면 된다는...그것도 때 되면 윈 서버에서 product key 정식으로 등록하라고 메시지 창이 나오는 데, 거기에 연결된 마소 사이트에 가면 product key 갱신이 가능해요.. 그걸로 key를 바꾸면 다시 6개월 공짜... ㅋㅋㅋㅋㅋㅋ그렿게 쓰고 있는 곳도 많습니다...^^ -
아..한숨만 나오는군요.
아마도 그 고객사는 32bit이든 64bit이든 돈 안들어가고 해결을 바라는 것 같습니다.
참 답답한 상황이지요.
-
저러다가 트래픽이 더 늘고, 느려져서 서비스에 지장이 올 수준이 되면 결국 백군님 회사에 난리 칠겁니다.
구축부터 운영까지 다 맡겨놓았더니 제대로 일 안했다고... 패널티 물린다고... -_-;
차라리 한번 제대로 터뜨려야 하는 것 아닌가 싶긴 하네요.
OS 라이선스 비용이 걸리면 Linux를 쓰는 것도 방법일테구요.
-
김강욱
01.16 01:13
이게 제일 걱정되는 상황이네요. 에효~
-
제경우랑 같군요 32비트용 라이브러리가 쭈욱깔려있고 어떤걸 쓰고 재설치시 어떤걸 깔아야할지 문서도 없는 경우가 많습니다. ㅡㅡ게다가 대다수 십년전 만든 자체 프로그램이라 소스도 다 없음..
저도 64비트(윈도 2008 R2부터는 64비트만 나옴) 로 업글삽질하다가 개발자의 지원없이 한달만에 포기. 64비트 싫어서 32비트쓰는게 아님.
경영쪽 입장은 약간의 장애는 몸으로 때우고 돈 아끼는게 이익입니다. ㅜㅠ -
참고로 OS가 32비트라서 4GB만 지원하는게 아님. 리눅스에서도 32비트지이지만 커널만 바꿔서 12GB이상 인식시켜서 쓴것처럼 윈도 사실 4기가 이상 사용가능하죠. 32비트 스탠다드 버전은 4GB지만 그이상 엔터프라즈버전등은 더 많이 인식하더라구요.
http://blogs.technet.com/b/sankim/archive/2009/04/15/windows-size.aspx
대신 윈도자체가 32비트면 한번에 할당이 2GB던가 안되니 이것도 딱해 해결은 아닐꺼 같긴하네요/.
-
서버 2008 스탠다드라서..... 32비트 제한이 4GB 네요...........
이래저래 답 없군요.
-
오늘 아침에 상급자와 미팅을 한 결과를 짧게 요약하자면...
1. 서버는 안정성이 생명이다. 램디스크나 기타 시도는 불허!
2. 고객사의 프로그램 일부 라이브러리 때문에 32비트를 쓸 수 밖에 없다.
3. 죽었다고 전화오면 살리고 죽기전에 미리미리 죽였다 살리면서 운영해라
4. 원래 운영 담당자는 욕 먹으면서 일하는게 일상이다
5. 모두들 이렇게 일 해왔다. 불만있으면 나가라
이라는군요 -ㅂ-
그래서 그냥 매일 아침 원격으로 접속해서 서비스 다 재시작하고 데몬프로그램 재시작하고 하는 방식으로 운영하렵니다.
어디든 여기가 아닌 다른 일할 회사를 찾아야 할거 같아요......
-
IT업 폭발적으로 늘어난게 10년을 넘어가면서 저런 문제는 이제 지뢰밭처럼 늘어나고 있습니다.
아에 전통적인 업체는 aix등의 유닉스를 쓰니깐 괜찮은데 2천년대 초,중반 만들어진 기업의 제품은 저런 경유가 많죠.
근데 DB를 재시작하면 문제가 생기지않나요? DB재시작해도 문제가 없다면 스크립트를 이용해서 예약작업 걸어둬보세요.
-
제가 맡고 있는 사이트 40여개 중 저런곳이 절반 이상입니다.
담당자한테 전화해서 서버 재부팅 하니까 10분정도 서비스 안됩니다. 이야기 하고
재부팅을 하기도 하니 DB 재시작이야 문제될거 없긴 하거든요
MSSQL 이 9할에 나머지가 오라클과 MySQL 이랑 Tibero..
근데 램디스크를 만들어서 해볼라고 해도 어차피 램이 4GB 이상 인식이 되지 않는 상황에서
램디스크 의미가 없을거 같기는 해요.... OS를 다시 깔지 않는 한 -ㅂ-
일단은 문제되는 사이트들에서 소스파일과 라이브러리 , DB 다 백업해온 다음에
가상머신에 64비트 OS 올려서 환경 똑같이 구축하고 시뮬레이션이나 돌려보려고 합니다.
지금 가지고 있는 프로토타입 소스로 돌려보니... 일부 DLL 파일들이 32비트 전용이라고
솔루션 시작조차 안되기는 하는군요 -ㅂ-
솔루션이라고 해봐야 CMD 로 자바 돌리는거랑 TOMCAT5 돌리는거 밖에 없기는 합니다만
자바랑 JSP 만 배워놔서 C++이나 비베,델파이 같은건 못만지는데.... 이걸 어찌 해야 하나 고민 중 입니다.
DLL 파일만 아니면 64비트로 옮겨갈 수 도 있을거 같기는 해요. 할 수 있는건 이리저리 해볼랍니다.
할 수 있는건 다 해보고 포기해야 그나마 후회가 덜 될듯....
-
1,2,3번에서는 고개가 끄덕거려지다가도 4,5번에서 정나미가 확 떨어지네요...;;
-
왕초보
01.17 00:57
음 cron같은 서비스 사용해서 주기적으로 재시동 하면 될듯 한데요. 2시간마다 리셋..
-
32bit에서 한 프로세스가 2GB 이상을 사용하는건 CPU의 PAE라는걸 기능을 이용하는건데요.
인터넷에선 이게 만능해결책처럼 등장하는데 반드시 그런건 아니예요. 프로그램을 컴파일 옵션에 LAA(Large Address Aware) 옵션을 켜서 컴파일해야 (기본 옵션은 다들 OFF입니다.) 적용되지 아무나 막 되진 않습니다. 일단 CPU의 레지스터 하나를 전용으로 낭비하기 때문에 일부 작업에서 속도저하가 발생할 수 있기에, 기본 옵션은 무조건 OFF 입니다. 그런데 작은 개발사의 경우 그게 뭔지 모르는데다가, 저기다 32bit OS를 설치한 회사가 그걸 미리 요청했을리도 만무하기 때문에 적용되어 있을 가능성은 아주 낮다고 생각되네요. 그럼 아무리 OS가 지원을 해봐야 말짱 헛거입니다.
그리고 서버에선 램디스크를 가능한 안쓰는게 좋긴 합니다. 서버에서 램디스크를 사용시에는 거의 불변하는 데이터를 미리 복사해두는 정도에서 사용하거나, 최소 몇분에 한번 정도 계속 램디스크를 백업하는 데몬을 두도록 권장하고 있습니다. 요즘 세상엔 차라리 속편하게 SSD 하나 저렴하게 구입해서 캐시용도로 쓰는게 낫습니다.
-
purity
01.16 11:03
- 32비트 자바 프로세스의 메모리 점유 최대 크기는 2GB입니다. 아무리 자바라고 해도 32비트, 64비트에 따라서 문제가 발생할 여지는 분명 존재하고 64비트 OS로 변경했다 해도 32비트 자바를 사용한다면 결과적으로는 아무런 해결책이 되지 않게 됩니다. 그러나 한편 이런 레거시 시스템들의 경우 의외로 2GB 메모리 제한까지도 충분히 이용되지 않는 경우도 많습니다. 즉 톰캣의 Heap 사이즈가 기본 값이거나 작아서 더 넓힐 수 있는 경우도 있어요. 따라서 톰캣의 Heap 사이즈 설정이 어떤지 살펴보시는 것도 좋을 것 같습니다.
- 동시성의 문제에 대응하는 신경쓰이지만 WAS 레벨에서 처리할 수 있는 방법 중 하나는 불필요 여러 웹 어플리케이션이 있고 각 컨텍스트별 DBCP를 사용하고 있다면 전역 DBCP로 대체, DB 컨넥션을 빠르게 버리도록 설정(전역 DBCP 기준으로 하면 removeAbandonedTimeout 설정), 세션 유지 시간을 짧게 설정 등의 방법으로 사용자 스레드의 점유를 최소화하는 것입니다. 물론 이는 그에 대응하도록 쿼리 및 코드가 최적화되어 짜여져야 함이 당연하지만 실상 시스템을 보면 혹시 모를 상황에 대비한다는 명목으로 지나치게 값이 길게 설정되어 있거나 코드 변경되어 불필요한데도 불구하고 초기 설정이 그대로 유지되고 있는 경우도 많습니다. 다만 앞서 서두에 썼듯이 이 것은 시스템 운영자가 아닌 개발자에게 의존적인 부분이라 많이 신경써야만 하는 행위입니다.
-
그 톰캣의 heap 인가에 대해서 얼마 전부터 알아보기 시작했었죠..
그래서 환경변수 중 CATALINA_OPTS 에 -server 와 -Xms 512M -Xmx 1024M 옵션 추가해 뒀구요
JAVA_OPTS 나 ANT_OPTS 도 설정 잡아 놨습니다.
그리고 caltalina.sh 인가에서도 설정 바꿔줘야 한다길래 거기서도 heap 메모리 영역 늘려주는거
설정을 해봤는데요....... 결과는 똑같더라구요 ㅜ.ㅜ
-
purity
01.16 12:22
아이고 이런... ㅠㅠ;;
-
김강욱
01.16 17:51
1) 사실 이런 경우에 할 수 있는 게 소스 레벨의 수정뿐인데, 과거 같으면 다량의 String + 가 엄청 CPU 와 메모리를 먹는다 해서 String Builder 같은 걸로 대체하기도 했습니다. 요즘은 컴파일러가 좋아서 부분적으로 알아서 바꾸기도 하구요. 소스내에 불필요한 메모리를 배제해서 heap 을 최대한 확보해야 할 듯.
2) 하나의 Thread 가 최대한 빨리 처리하는 것도 중요합니다. 그래야 쓰레드 X 개당 메모리가 줄어들테니까요.
3) 비됴메모리도 메모리에 우선 매핑되니 제일 작은 걸로 교체해 본다.
4) 각종 캐시 다 끈다.
아파치 파일 캐시 같은 경우 걍 끄고, 램디스크에서 해결한다.
5) 불필요한 서비스 싹 죽인다.
6) 어쨌든 속도향상을 위해 페이지 파일은 Ram Disk 에.
적고 나니, 이렇게 해도 노력대비 버티는 것도 잠시네요. 역시나 window 든 linux 든 64 가는 게 답이네요. -_-;
-
오묘한 외계어 난무. :-)
-
ㅋㅋ 후일 치킨집 사장님 되실 분들의 대담입니다.
아, 상대 나온 제가 어쩌다 저 얘기들을 알아듣고 있을까요? -
하뷔
01.16 20:32
하긴... 완전히 안되는 것도 아니고 잠깐 내렸다 올리면 그럭저럭 돌아갈 경우에 인프라 투자를 하는 업체는
아마도 국내에 거의 없을거입니다. 그 업무로 인해 많은 손해를 입는다등가 고객의 엄청난 컴플레인을 받는게 아닌담에야....
(근데 당췌 뭔 생각으로 RAM을 저렇게 갖다꽂았데요??? 애초에... )
-
보기만 해도 가슴이 아픕니다...
메모리 4GB 더 꽂아서 16GB 만들어 주고 싶네요.
-
유태신
01.17 14:21
인터넷을 뒤지다 보니 이런 방법이 있네요... 참조해보시기 바랍니다.
http://ryuchan.kr/328
-
PAE 관련해서는 부서장하고 이야기 하면서 가장 먼저 꺼내봤던 화제인데요
이게 문제를 일으킬 소지가 있기 때문에 하지 말라고................................
안정성 안정성 -ㅂ- 그냥 매일 서비스와 데몬 재시작 하면서...
-
SON
01.18 16:01
RAM Disk 는 4G 이상의 공간을 잡아 줄 수 있더군요.
총 8GB 메모리에서,
RAM 4G
Ramdisk 4G 할당해서 썻어요.
스왑을 Ramdisk 에 하는게 현재 최선같아 보이네요.
아니면, 재시작용 스크립트 하나 만들어서 문제 생기면 계속 그것만 실행
-
왕초보
01.19 14:02
램디스크도 시스템을 좀 탄다니.. 스크립으로 모니터하면서 문제 생길듯 할때마다 자동 재실행이 답인듯 합니다.. -_-;; 남는 안쓰는 메모리는 뽑아서 다른 곳에 두시는 것이 정답일듯.
직접 설명하기 뭐하지만 괜찮은 블로그 컬럼이 있어서 소개합니다.
http://cappleblog.co.kr/554[32비트 윈도우의 4GB 메모리 인식 한계란 무엇인가?]