Skip to main content

Posts

Showing posts from March 27, 2011

continuous integration with buildbot 간략 설정

git, svn등, 소스관리 툴을 사용하다 보니, 다수의 사용자에 의해서 소스가 관리된다. 그러나, 어느 누군가가 소스서버에 commit or push할때, 뭔가 빠뜨리는 경우가 발생한다. 분명, 그 어느 누군가의 환경에서는 컴파일이 되나, 다른 사용자가 소스서버에서 fetch한 소스는 컴파일이 되지 않을 것 이다. 이런 경우를 사전에 회피하기 위해, continuous integration tool이 사용된다.  그 중, 본인은 buildbot를 사용해 보았다. 기본적인 buildbot의 정보는 아래의 사이트에서 구한다. http://www.ibm.com/developerworks/kr/library/l-buildbot/index.html 완성된 master.cfg c = BuildmasterConfig = {} ####### BUILDSLAVES # The 'slaves' list defines the set of recognized buildslaves. Each element is # a BuildSlave object, specifying a username and password.   The same username and # password must be configured on the slave. from buildbot.buildslave import BuildSlave ['slaves'] = [BuildSlave("아무개", "아무개암호")] c['slavePortnum'] = 9989 from buildbot.changes.gitpoller import GitPoller from buildbot.changes.pb import PBChangeSource c['change_source'] = PBChangeSource() #master.cfg.sample에서는 GitPoller를 사용하고 있으나, 잘 안 되더라

Too many open files

특정 프로그램에서 ulimit -n 에서 지정한 수보다 많은 수의 파일을 열 경우, Too many open files라는 에러메세지가 발생하면서, 파일을 열수 없게 된다. 이럴 경우, 프로그램의 버그일 가능성이 높다. 즉, 불필요하게 많은 파일을 열었거나, 열어놓았던 파일을 닫아주지 않았기 때문이다. 그래서, 프로그램의 버그인지, 리소스제한인지를 판단하기 위해서 다음과 같이 실행해 본다. 1. lsof -n -P | grep [pid or name] ; 여기서 -n -P 옵션은 hostname분석이 아니 않음이라는 뜻이고, 고속처리된다. ; 만약 이 옵션을 지정해 주지 않는 경우, network파일이 많으면 상당히 느려진다. lsof가 없을때는 ls -l /proc/{pid}/fd 로 확인가능하다. 그 결과, 동일한 pdb파일이 다수에 걸쳐 open된 것을 확인 할 수 있다. 이런 경우, 프로그램의 bug이므로, code수정이 불가피. mediamana 1452 root  cwd       DIR                1,0     1024         22 /work mediamana 1452 root  rtd       DIR                1,0     1024          2 / mediamana 1452 root  txt       REG                1,0  9197980      46022 /work/mediamanager mediamana 1452 root  mem       REG                1,0   123592      22077 /lib/ld-2.5.so mediamana 1452 root  mem       REG                1,0  1450440      22143 /lib/libc-2.5.so mediamana 1452 root  mem       REG                1,0   556128      22092