[문제해결] 컴퓨터에 MSVCR71.dll이(가) 없어 프로그램을 시작할 수 없습니다. 2015-12-28

1. 문제상황

> 윈도우7에 개발환 경 설정을 위해 memcached 설치시 다음과 같은 문제가 발생하였다.

MSVCR71

컴퓨터에 MSVCR71.dll이(가) 없어 프로그램을 시작할 수 없습니다. 프로그램을 다시 설치하여 이 문제를 해결하십시오.


2. 문제확인

> 윈도우에 프로그램 설치시 파일손상으로 인하여 문제가 발생한다고 한다.


3. 문제해결

> 손상되지 않은 파일을 OS별 해당 경로에 복사하여 문제를 해결하도록 하자.
msvcr71


* 윈도우 XP : C:\Windows\System32

* 윈도우Vista : C\Windows

* 윈도우7 (32비트) : C:\Windows\System32

* 윈도우7 (64비트) : C:\Windows\SysWOW64

[문제해결] 심각: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 2015-11-25

1. 문제상황

> 다음과 같은 에러와 함께 Eclipse에서 Tomcat이 실행되지 않았다.

심각: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4919)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Eclipse_error


2. 문제확인

> Maven > Update Project Configuration 실행시 maven 라이브러리 경로가 삭제되는 현상이 발생한다고 한다.
Eclipse_error_1


3. 문제해결

> 다음 메뉴에서 경로를 설정해주면 정상적으로 서버가 시작된다.

* 프로젝트 우클릭 >  properties
* Deployment Assembly > Add 버튼 > Java Build Path Entries > Maven Dependencies 선택 > Apply버튼

Eclipse_error_2

[문제해결] MemcachedClient getClient Exception : java.lang.IllegalStateException: Shutdown in progress 2015-10-15

1. 문제상황

> (Was(Tomcat) * 2) + DB(Mysql)*2 + memcached*1 구성의 게임서버환경에서 서비스가 정지되어 버리는 현상이 발생하였다. 접속시간대 로그는 다음과 같이 Xmemcached가 멈췄다는 에러를 출력하고 있었다. 그리고 이상한건 WAS가 죽어있었다.

ERROR ({http-bio-80-exec-40} MemcachedConnection.java[getClient]:252) [2015-10-14 18:49:45,948] - ==> MemcachedClient getClient Exception : java.lang.IllegalStateException: Shutdown in progress
...
Exception : net.rubyeye.xmemcached.exception.MemcachedException: Xmemcached is stopped

급한대로 WAS를 시작하여 서비스를 재개하였다. 다음날 똑같은 피크타임에 다시 서비스가 정지 되었다. 로그에 보여지는 에러는 다음과 같이 어제와 달랐다.

Exception : net.rubyeye.xmemcached.exception.MemcachedException: There is no available connection at this moment
Exception : java.util.concurrent.TimeoutException: Timed out(5000 milliseconds) waiting for operation while connected to 000.000.000.000:11211

2. 문제확인

> 첫째날은 커넥션이 실패 하였고 둘째날은 가능한 커넥션이 없으며 타임아웃이 발생하였다. 다음과 같은 부분을 의심해 보았다.

* 부하가 몰리는 시간에 타임아웃이 발생한 것으로 보아 서버 1대로 충분하지 않다.
  ==> CBT 기간이었으므로 부족한건 무리가 있어보인다.
* 너무 무분별한 캐시로딩을 시도 했다.
  ==> for문에서 계속 캐시로딩을 시도한부분 발견
* 자바에서 사용하는 Xmemcached 버그이다. (구글링)
  ==> 첫날 WAS가 멈춘 것은 Xmemcached의 버그인것으로 보인다. 로그를 남기지 않았기에 정확하지는 않다.
* 사용자가 너무 몰려 Memcached에 설정된 MAX_CONNECTION을 넘었다.
  ==> 회원 1명당 친구가 최대 50인데 이것을 건건이 조회 했다면 넘을 수도 있다고 판단된다.

3. 문제해결

> 이러한 문제에 대하여 여러가지 대처 사항을 적용하였다.

* 가장 현명한 것은 무분별한 Call을 프로그램 상에서 막는 것으로 보인다.
* 프로그램 상에서 힘들다면 서버를 늘려 부하를 분산시킨다.
* 서버의 스팩을 고려하여 최대 접속 수를 늘려준다.
* 정확한 문제 파악을 위하여 memcached 로그 설정 옵션 (파일크기가 너무 커질 수 있음에 주의하자)
  ==> OPTIONS="-vv >> /var/log/memcached 2>&1"
* 피크타임때 MEMCACHED 상태를 수시로 확인한다. (다음 내용을 파일에 받아 tail로 확인)
  ==> /usr/bin/memcached-tool 127.0.0.1:11211 stats