마영전하시는 분들은 상당히 고질적으로 서버렉을 경험하셨을 것입니다.
마영전 서버렉으로 인한 주요 증상은 시스템 메세지가 늦게 뜨거나, 퀘스트 문구가 뜨는데 한창 걸리고, 보스를 처지하고 나서 한창동안 화면이 슬로우 모션을 보인다던지, 파티에 입장하려다가 한참동안 "응답 없음" 정지상태로 있다가 튕긴다던지 등...
알기쉽게 설명한 JAVA와 C#, 그리고 C와 C++의 특징
http://studyinglw2.tistory.com/m/post/entry/%EC%9E%90%EC%9C%A0%EC%97%90%EB%8A%94-%EA%B7%B8%EB%A7%8C%ED%81%BC%EC%9D%98-%EC%B1%85%EC%9E%84%EC%9D%B4-%EB%94%B0%EB%A5%B8%EB%8B%A4
C++이 아닌 C#으로 발로 만든 마영전의 자이언트 서버 프로그램
http://rein.kr/blog/archives/2671마영전 서버에 쓰인 C#에 대한 득과 실
http://rosagigantea.tistory.com/m/post/408이러한 증세는 유저 클라이언트의 응답 속도에 비해 서버의 응답 속도가 충분히 따라주지 못하기 때문입니다. 왜냐하면 클라이언트는 C++ (C언어에 객체지향적인 기능들을 추가하여 데이터의 추상화를 구현시킨 언어)라는 로우 레벨 (OS 커널에 직접적으로 명령을 내려 하드웨어 리소스에 대한 직접적인 사용) 언어로 짜서 실행 속도가 빠른 반면에, C#이라는 가상 머신을 이용하는 언어로 짜여진 서버 프로그램은 실행 시 그러한 가상 머신이라는 인터프레터를 거쳐 해당 서버 하드웨어에 맞게 번역이 된 결과가 실행되므로 실행 속도가 느리고 실행 성능도 떨어집니다.
더더구나 C나 C++로 짜면 개발자가 하드웨어에 맞게 직접적으로 메모리 사용 등을 일일이 다뤄줘야하므로 프로그럄 라인 수가 방대한 반면에 최상의 성능이 보장된 프로그램을 만들 수 있습니다. C#은 개발자가 메모리 사용 부분을 거의 다룰 필요가 없어 라인 수가 줄어듭니다. 하지만 메모리 관리를 가상 머신이 해주는데 C++에 비해서는 가상 머신의 메모리 관리는 최악입니다.
C#은 성능이 중시되지않는 프로그램에서 써야지 온라인 뱅킹, 온라인 증권 트레이딩 시스템, 게임 서버같이 반응 속도가 중요한 곳에서 쓰면은 안되는 것입니다.
결국 틈만나면 일어나는 서버렉은 맨날 점검 삽질해도 개선되기는 어렵습니다. 서버단을 갈아엎어야죠. 이는 게임을 다시 갈아엎자는 것과 같으니까요.