오래전 부터 고민이 있었다.


모니터링 시스템을 볼 때 마다 오후 쯤 file open 수가 점점 증가하는 것이었다.


결국에는 다음과 같은 오류를 내면서 장애

java.io.IOException: java.io.IOException: Too many open files

아뿔사..


드디어 그날이 왔구나.

ulimit 로 파일 오픈 셋팅을 보니 16000 .. 무리 없는 셋팅


구글링 끝에 lsof 이라는 명령어를 루트로 실행하면 현 상태를 파악 할 수 있을 것이라는 것만을 알게 되었다.


pipe

pipe

pipe


모든 FD가 파이프 여는데 사용되고 있었다.


코드에서 파이프를 사용하는 곳은 한군데

바로 ProcessBuilder !!!


비교 코드 들어간다.

ProcessBuilder builder = new ProcessBuilder( command );

process = builder.start();

process.waitFor()


으흠 도통 할 수가 없어서 API 문서를 살펴 보았다.

이것보다는 Process의 API 문서가 더 도움될 것 같은데..

눈에 띈 부분이 맘에 걸렸다.

destory...

destory()

destory()


으흠 이런거 해주는 코드 자체가 없는데

구글링 해보니 inputstream, outputstream, errorstream 를 종종 열어두는 경우가 발생한다는!!!


이거닷!


혹시나 해서 Utillity class가 있나 싶어서 찾아보았지만 없었다.


그래서 그냥 하나 만들었다. ㅋㅋ

public class ProcessExecutor {

private static final Logger LOG = Logger.getLogger(ProcessExecutor.class);


public static int execute(List<String> command) {

Process process = null;

try {

ProcessBuilder builder = new ProcessBuilder( command );

process = builder.start();

LOG.debug(StringUtils.join(builder.command().toArray()," "));

if (0 != process.waitFor()){

LOG.info("Command Execute Fail");

LOG.info(StringUtils.join(builder.command().toArray()," "));

}

return process.exitValue();

} catch (IOException e) {

LOG.info(StringUtils.join(command.toArray()," "));

throw new RuntimeException(e);

} catch (InterruptedException e) {

LOG.info(StringUtils.join(command.toArray()," "));

throw new RuntimeException(e);

} finally {

if ( null != process) {

IOUtils.closeQuietly(process.getInputStream());

IOUtils.closeQuietly(process.getOutputStream());

IOUtils.closeQuietly(process.getErrorStream());

process.destroy();

} else {

LOG.fatal(StringUtils.join(command.toArray()," "));

LOG.fatal("Cannot close Process Streams");

throw new RuntimeException("Cannot close Process Streams");

}

}

}

}

생각보다 기네..


아직 까지는 별 문제 없이 잘 돌고 있다..


특히 모니터링에서 너무 이쁜 그래프~

'direct' 카테고리의 다른 글

ProcessBuilder 사용시 주의 사항  (0) 2009.08.24
득템? 득녀 했습니다.  (2) 2009.05.31
책홍보.. 프로스프링 2.5  (2) 2009.04.30
CSS Naked Day~!  (2) 2009.04.09
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

태륜이가 소개해준 책이다.

전에 한 Programming Collective Intelligence 의 저자의 신작~!

http://my.safaribooksonline.com/9780596801656


티스토리도 크롬에서는 책 넣기가 안되는구나..

Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.07.31 11:03 신고
    댓글 주소 수정/삭제 댓글
    뷰티풀 데이터!!!
    책 보자마자 보고 싶었던 책인데...
    역시 영문은 보기 부담스러워요 흙흙
    • 2009.08.06 18:16 신고
      댓글 주소 수정/삭제
      ㅋㅋ 아직 번역서는 안나왔나? 그럼 스터디 연기군..ㅋ

Samsung Electronics | HMX-R10 | Normal program | Pattern | 1/51sec | F/3.5 | 0.00 EV | 0.7mm | ISO-141 | Flash did not fire | 2009:05:30 19:29:38

5월 30일 토요일 오후 4시 20분 탄생

더 이쁜 사진은 추후에 올릴께요..

힘든 하루였네요..

'direct' 카테고리의 다른 글

ProcessBuilder 사용시 주의 사항  (0) 2009.08.24
득템? 득녀 했습니다.  (2) 2009.05.31
책홍보.. 프로스프링 2.5  (2) 2009.04.30
CSS Naked Day~!  (2) 2009.04.09
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.06.08 09:19 신고
    댓글 주소 수정/삭제 댓글
    와우! 축하!!


PRO SPRING 2.5(프로 스프링 2.5)
카테고리 컴퓨터/IT
지은이 얀 마카첵 (위키북스, 2009년)
상세보기

몇달 동안 고생하던 책이 나왓습니다.

큰 실수 한 것이 있었기 때문에

마음이 깔끔하지는 않네요.. ^_^

내상을 입은 듯한 느낌이에요

볼 때 마다 실력을 다지는 계기가 되도록 하겠습니다.

감사합니다.


ps. 몇권이나 팔릴려나.. ㅋ

'direct' 카테고리의 다른 글

득템? 득녀 했습니다.  (2) 2009.05.31
책홍보.. 프로스프링 2.5  (2) 2009.04.30
CSS Naked Day~!  (2) 2009.04.09
new haven  (9) 2009.03.24
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.05.19 01:51 신고
    댓글 주소 수정/삭제 댓글
    번역이구나~ 축하해~

CSS Naked Day~!

2009.04.09 10:30

CSS Naked Day 2009

오늘은 CSS Naked Day 이다.

내가 만든 스킨도 아니지만

부끄러움을 무릅쓰고


벗었다.. ㅋ


I will get nude 라고 등록하는 곳이 있는데..

등록해도 아직 안올라갔네~ㅋ

'direct' 카테고리의 다른 글

책홍보.. 프로스프링 2.5  (2) 2009.04.30
CSS Naked Day~!  (2) 2009.04.09
new haven  (9) 2009.03.24
파일 찾기 : Find로 File을 Find 하자!  (3) 2009.03.04
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.04.09 11:51 신고
    댓글 주소 수정/삭제 댓글
    엄허~ 블로그를 벗겨놓으셨군요ㅎㅎ
    • 2009.04.10 10:22 신고
      댓글 주소 수정/삭제
      벗기는건 항상 좋다능~ ㅋㅋ

new haven

2009.03.24 11:00

아는 동생이 요즘 알바로 플그램 짜는 곳이다. 성공해서 형 좀 델꾸 가라~ ㅋㅋ


크게 보기  
여긴 사는 곳. 집도 제공이라니.. ㅋ

크게 보기

'direct' 카테고리의 다른 글

CSS Naked Day~!  (2) 2009.04.09
new haven  (9) 2009.03.24
파일 찾기 : Find로 File을 Find 하자!  (3) 2009.03.04
[iPhone] iPhone 과 OpenGL ES (1) : 어디에서부터 시작할 것인가?  (3) 2009.02.21
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.03.26 17:55 신고
    댓글 주소 수정/삭제 댓글
    형 저도 좀 굽신굽신..ㅋㅋ
  2. 2009.03.31 11:34 신고
    댓글 주소 수정/삭제 댓글
    형 가신 다음에 저도 좀 굽신굽신...ㅋ
    • 2009.03.31 11:57 신고
      댓글 주소 수정/삭제
      여기 저기 빌붙는 이가 많군.. ㅋ

      나부터~ ㅋ
  3. 2009.03.31 13:35 신고
    댓글 주소 수정/삭제 댓글
    저도 가고싶어요 ㅠㅠ
  4. daisy
    2009.04.03 13:24 신고
    댓글 주소 수정/삭제 댓글
    근데 가서 코딩하고싶진 않다.
    -_-a
  5. 2009.08.29 13:20 신고
    댓글 주소 수정/삭제 댓글
    혹시 ㅈㅌ말하는거?

자꾸 grep 과 사용법이 해깔려서

log차원에서..

find . -name "*.swf" -ls

파일 내용에서 찾는 것은 다음 기회에..

Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.03.09 18:48
    댓글 주소 수정/삭제 댓글
    비밀댓글입니다
  2. 김형
    2009.04.13 16:39 신고
    댓글 주소 수정/삭제 댓글
    파일 내용 검색하는 건 ack 추천.
    • 2009.04.14 14:36 신고
      댓글 주소 수정/삭제
      미투 타고 오셨군요~ ㅋ
      이 누추한 곳까지..

      ack는 정말 강력한 것 같아요.
      몇가지 적어봐야겠어요..

독립 개발자가 된 3명의 블로그 포스팅에 대해 읽어보고

내가 생각하는 독립 개발자(independent programmer)란 어떠한 사람인지.

프리랜서와는 어떠한 차이가 있을까?


앞으로 10년에 대한 계획을 세우고 있는데

그 후보중 하나가 바로 독립 개발자이다.


회사에 속해 있는 비독립(independent의 반대는 dependent인데 이걸 한글로는 뭐라고 옮겨야 하나?) 개발자로서 어떻게 보면 은퇴방안이라고도 할 수 있다.

또한 독립에는 많은 댓가가 따르듯이 안정이라는 측면에서는 오히려 희생해야 할지도 모른다.


그것이 내가 AppStore에 기대를 거는 이유이다.

소프트웨어 배포망을 통해 중간 단계 없이 충분한 보상이 따를 수 있다면, 미래는 밝을 것이다.


하와이에서 노후를 보내는 나의 모습?

무릎에는 맥북프로가 있기를..

Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 김형
    2009.04.13 16:43 신고
    댓글 주소 수정/삭제 댓글
    맥북프로 뜨거워요. 무릅이 익어버릴지도
    • 2009.04.14 14:37 신고
      댓글 주소 수정/삭제
      쿨링 받침도 구입해야겠네요~
      맥북프로를 언제 살지는 모르겠지만

Database versus files for images 라는 제목의 흥미로운 포스팅을 보았다.

현재 이미지 관련 서비스를 하고 있기 때문에 관심이 가는데

중간에 보면 이런 표현이 나온다.

Upload any binary content to the filesystem with pointers in a database


파일 시스템에 파일을 올리고 그 포인터를 DB에 저장한다는 뜻은

/tmp/files/image0.jpg 라는 위치에 파일을 올리고

DB에 "/tmp/files/images0.jpg" 위치를 두는 것이라고 생각했다.

그리고 덧글에


saving the files to a database and having a physical pointer on the file system. 

이라고 하는데

DB에 파일을 저장하는 것은 이해하겠다만( BLOB 같은 Big Binary이런 타입이 있다 ) 파일 시스템에 물리적 포인터를 가진다는 것이 좀..

예를 들면

"/tmp/files/images0.jpg"를 요청하면 (http://hostname/tmp/files/images0.jpg)

DB에서 꺼내준다는 것인가?

이 덧글에 대해 저자는


using the DB as a “reverse” cache could work


이라고 평가했다.

캐시라..

좀 더 고민해봐야겠다.

그것보다도 memcached를 활용해서 수시로 변경되는 이미지를 저장하는 방식은 괜찮은 것 같다.

파일명을 키로 하고 바이너리를 직접 저장하는

그런데 대용량 서비스에서는 얼마나 많은 캐시 서버가 필요한거야? ㅋㅋ


통계라도 가지고 있어야 이런 방향을 결정 할 수 있을 것 같다.

Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 김형
    2009.04.13 16:44 신고
    댓글 주소 수정/삭제 댓글
    facebook의 haystack 한번 바봐요~
    • 2009.04.14 14:39 신고
      댓글 주소 수정/삭제
      아 단지 임시 파일을
      NAS가 아닌 다른 공간에 두면 어떤 이점이 있을까?
      싶어서.. 남긴 글이에요..

      페이스북도 해야하나 싶어요.. ㅠ.ㅠ


2009/02/14 - [indirect] - [iPhone] 첫번째 예제 구현 : 계산기 

위 글에서 말한 것처럼

OpenGL ES 환경을 어떻게 만드는 것이 가장 손쉬운가?

라는 조사를 하고 있다.

일단 iPhone 개발 환경에서 OpenGL ES 를 선택하면

기본적으로 만들어주는 코드에서는

EAGLView 라는 코드로 화면에 뿌려주는 부분을 미리 만들어두었고

Apple에서 구할 수 있는 몇가지 샘플에서도

동일한 방식을 취하고 있다.


XCode 에서 OpenGL 프레임워크 추가하는 방법에 대한 포스트는 

사전 프로젝트 생성만이 아닌

기본 프로젝트에 프레임워크를 추가하는 scratch 방식을 알려주는데

NSOpenGLView 이라는 클래스를 사용하는 방식을 보여주고 있다.

물론 NS 쪽이라 iPhone에서 사용할 수 있을지 모르겠지만

NSOpenGLView 이라는 클래스가 엄연히 존재해도 애플 샘플코드에서는

EAGLView 처럼 따로 만들어서 사용한다는 것을 볼 때

비슷한 기능을 하는 클래스가 존재할 것 같다.


Google을 통해 시작점을 찾았다.

iPhone Application Programming Guide 에서 Drawing with OpenGL ES 에 관한 가이드를 보면

UIView 클래스의 layerClass 메소드를 오버라이드 해서

CALayer(Core Animation Layer) 대신에 CAEAGLLayer(Core Animation Embedded A? Gaphic Library Layer[각주:1].) 을 반환하는데 CAEAGLLayer 라는 것은 Core Animation과 OpenGL ES 와 접점의 역할을 하는 것으로 보인다.

The returned CAEAGLLayer object is a wrapper for a Core Animation surface that is fully compatible with OpenGL ES function calls.



계속 이어집니다.

  1. 추측으로 이름을 해석해본 것일뿐이다. A 에 대한 축약은 무엇일까? [본문으로]
Posted by 헉군

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2009.02.23 13:37 신고
    댓글 주소 수정/삭제 댓글
    OpenGL을 공부하시는군요.
    저도 두어달 전에 조금 파다가 일 때문에 잠시 손 놓고 있는 상태네요. :)
    재미있긴 한데 당장 딱히 써먹을데가 없어서 마음 아프더군요.
    • 2009.02.25 23:23 신고
      댓글 주소 수정/삭제
      iphone도 이제 시작하고
      opengl도 이제 시작한 상태이에요
      ^_^

      이것저것 핑계대며
      osx에 가까워지려구요..
  2. 2009.02.26 01:09 신고
    댓글 주소 수정/삭제 댓글
    http://www.bit-101.com/blog/?p=1861

    현재 만드려는 어플리케이션과 거의 유사한 앱


BLOG main image
안녕하세요. 안정된 코딩, 여유로운 프로젝트, 떠오르는 코더 by 헉군

카테고리

분류 전체보기 (120)
direct (68)
indirect (29)
transmissive (13)
agenda (6)
idea (3)

달력

«   2018/02   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28      
Statistics Graph