nginx를 설치하면, ngx_http_upstream_module 을 따로 로딩할 필요 없이 사용할 수 있다.

nginx -V 로 보이는 모듈 리스트에서는 보이지 않는다. 


$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.6.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)

TLS SNI support enabled

...



nginx.conf 파일을 upstream 및 proxy_pass로 설정한다. 192.168.0.1~2로 reverse proxy 연결을 지원한다(예를 들어 nginx-tomcat 간의 connection을 연결하는 형태). keepalive를 사용하면 keep alive 기능과 동일하다. (time_wait 이 거의 발생하지 않는다.)


http {


  upstream pp-server {

    server 192.168.0.1;

    server 192.168.0.2;

    server 192.168.0.3;

    keepalive 30;

  }


  server {

    listen 80;

    server_name localhost;



    location / {

      proxy_pass http://pp-server;

    }

  }

}



nginx+ (상용 버전)에서는 고급 기능을 쓸 수 있다.



*튜닝 요소

keepalive 사용시 숫자를 잘 정의해야 한다. keepalive를 사용하는 것이 socket close를 최대한 적게 할 수 있다는 장점이 있지만, 너무 작게 설정하면, 작은 수의 socket close를 계속 발생할 수 있다. 

개인적으로 ulimit으로 해서 file socket 개수가 무한대라면, 높은 값(15000)을 주어도 무방한 듯 하다. 

테스트를 통해 확인해보니 너무 작게 주면 그 개수안에서 LRU 정책을 사용하여 socket close가 여전히 발생한다. 많이 줄 수록 socket close는 거의 발생하지 않았다.




* 참조

http://nginx.org/en/docs/http/ngx_http_upstream_module.html






Posted by '김용환'
,


예전에 점검이라는 단어를 외국에서는 maintainance 라고 적었었다.



동사와 함께 쓰일 때는 undergo를 함께 쓴다. 

'점검중이다' 라는 영어문구이다.


Web service is undergoing maintainance.

Web application is undergoing maintainance.


또는 동사 없이 쓸 때는 in progress를 쓰는 것이 좋다. 


maintainance in progress. 

Posted by '김용환'
,



- 종료 (stop)


$ ps -ef | grep logstash 

$ kill <processid>



- 시작 (start)


$ nohup bin/logstash -f conf/logstash.conf 2>&1 &

Posted by '김용환'
,


 Backend 서비스중 하나로서, Apache Http 서버를 실행해서 Tomcat과 붙여서 테스트하면 느리다고 한다. Tomcat만 실행하면 1초 내외라 한다. UI 정적 리소스는 전혀 없고, 하나의 ip에서 ui요청하면 여러 리소스를 서비스하는 것이 아니라 1건씩 처리해주는 서버이다. 완벽하지는 않지만, 도움이 될 듯 해서 공유한다. 



<성능>

1. KeepAlive

Apache 설정 보니. KeepAlive 설정은 전혀 보이지 않는다. 


KeepAlive on/off 여부

KeepAliveTimeout 숫자


디폴트는 On 이라, 따라서 서버 소켓 개수 여부는 리눅스의 ulimit 개수까지 file open이 된다. 그리고 KeepAliveTimeout은 5초입니다.  Session이 다르면 해당 소켓을 쓸 수 없다. 

http://httpd.apache.org/docs/current/ko/mod/core.html#keepalive


UI가 많은 포털에서는 KeepAlive가 유용하지만, 해당 서버의 경우 요청이  그렇지 않기 때문에 검토해야 한다. 

그러나 Client쪽에서 KeepAlive로 통신하는 경우를 선호한다면, KeepAlive를 On으로 하는 것이 좋다. 소켓은 열고 닫는 비용이 항상 비싸다..





2. Timeout 

Timeout 설정은 없다. Timeout은 디폴트값은 60초이다. 

즉 특정 클라이언트의 ack / syn 가 오지 많으면 60초를 기다리라는 뜻으로, 5초나 10초로 짧게 해주면 좋을 듯 하다. IDC내부라면 최대 5이다.

http://httpd.apache.org/docs/current/ko/mod/core.html#timeout


Timeout 5


3. ulimit -f 확인

ulimit -f 하셔서 프로세스에서 최대 몇개의 파일을 open할 수 있는지 체크해야 한다. 

보통은 ulimited 또는 최소 34000개 이상의 값을 지정한다.  keepalive로 사용할 경우 이 값이 굉장히 중요해며, 성능의  중요 factor중 하나가 된다. 



4. mpm_worker_module

mpm_worker_module 부분의 MaxClients 설정값과 StartServer를 늘려주는 것이 좋을 듯 싶습니다.  메모리는 조금 늘어나도 성능이 늘어나기 때문이다. 어느정도 성능이 필요한 서버이기 때문에 초기값을 조금 많게 잡고 MaxClients 개수를 높여 성능 이슈가 없게 할 수 있다. 


<IfModule mpm_worker_module>

    StartServers          128

    MaxClients           1024

    MinSpareThreads      25

    MaxSpareThreads      75

    ThreadsPerChild      25

    MaxRequestsPerChild   0

</IfModule>



5. mod_jk timeout

mod_jk에 timeout을 사용하는 것이 좋다.

http://knight76.tistory.com/entry/modjk%EC%9D%98-workersproperties-%EC%84%A4%EB%AA%85




<보안 관점>


1. SSL쪽은 이거 보셔서 알고리즘을 변화시키면 된다. 

 http://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/


SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM

2. Directory

보안을 높이기 위해서는 cgi-bin같은 디렉토리, ui 디렉토리를 보여주지 않도록 설정한다. 




<기타>

Tomcat쪽도 server.xml의 Timeout을 확인한다. 

 

http://tomcat.apache.org/tomcat-7.0-doc/config/http.html


connectionTimeout 같은 류를 꼭 체크한다. 


Posted by '김용환'
,


1. 실행환경 구축 - node.js 설치
$ brew install node

2. Eclipse ide 환경 구축 - nodeclipse 설치
http://www.nodeclipse.org/ 레퍼런스
(update site - http://dl.bintray.com/nodeclipse/nodeclipse/0.8.0/)


3. 서버 설치 - nodemon 설치
npm install -g nodemon

$ nodemon server.js 

13 Dec 21:05:22 - [nodemon] starting `node server.js`

Server Strat! Listen 3000

13 Dec 21:05:34 - [nodemon] restarting due to changes...

13 Dec 21:05:34 - [nodemon] /development/work/wysnode/route/api.js



4. mysql 쪽 client 설치

참조 - https://github.com/felixge/node-mysql

$ npm install felixge/node-mysql 




5. 개발환경

(예전 브라우져에서는 alert를 이용하거나 기껏해야 jquery로 개발하던 환경이었는데.. chrome 브라우져 쓰니. 확실히 좋아진 듯 함)

chrome의 개발자 도구를 이용해서. 다양하게 테스트가 가능.

- nodejs 코드에서 console.log 의 값 확인할 수 있음.

- chrome의 개발자 도구에서 list of map을 console.table로 확인가능, console.log 바로 사용 가능 

https://developers.google.com/chrome-developer-tools/docs/tips-and-tricks



좋은 프레임웍이 많음.  갖다 쓰면 됨. 



6. 개발하고 있는 거


-  UI (crud) + mysql db query 


-  현재 사용하고 있는 프레임웍은 

nodejs + express + backbone 으로 사용.. java 느낌내면서 쓸 수 있다는 큰 장점. 





느낀점 : node.js는  async 기능(callback)이 상당히 좋았고, rest (restful) 구현이 상당히 쉬웠다. 

게다가 json 구현이 이렇게 쉽다니.. 자바에 비하면 정말 편한듯.. 왜. node.js가 사람들이 왜 열광하는지 느꼈음. 

(자바는 정말 json 구현이 다양하게 만들때 좀 귀찮은 일이 많다.)

admin 용으로 충분히 쓸만한 듯 



'Web service' 카테고리의 다른 글

log stash 재시작 (restart)  (0) 2015.03.24
5분짜리 apache http 서버 성능 컨설팅 내용  (1) 2014.05.28
spring 3.2 new features  (0) 2013.06.10
zookeeper commiter 커미터로 google 엔지니어 참여  (0) 2013.05.14
SPDY 공부  (1) 2012.12.14
Posted by '김용환'
,



샘플예제

https://github.com/rstoyanchev/spring-mvc-32-update


좋은 자료

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/new-in-3.2.html

http://www.slideshare.net/sbrannen/spring-31-to-32-in-a-nutshell

http://www.youtube.com/watch?v=GSsWMLiKF-M

https://github.com/SpringSource/spring-mvc-showcase


Posted by '김용환'
,


* zookeeper committer로 구글 직원 입사 

zookeeper 정식 committer로 구글 직원 Alexander Shraer (이하 Alex, 이스라엘인으로 추정) 이 입사하게 되었다.

원래 이친구는 yahoo 직원이었는데, 구글로 입사~ zookeeper 가 점차 좋아질 듯. 이 친구도 약간 천재끼가 있어보임..



* Alex 의 홈피 

http://www.cs.technion.ac.il/~shralex/



* Alex 가 해결한 큰 이슈중 하나

  •  현재 zookeeper 설정 파일을 정의한 서버로 클러스터링이 되는 부분을 동적으로 membership을 구성하도록 (0.95.0)

https://issues.apache.org/jira/browse/ZOOKEEPER-107

http://wiki.apache.org/hadoop/ZooKeeper/ClusterMembership

'Web service' 카테고리의 다른 글

[node.js] 설치 및 서버 개발하면서 느낀점  (0) 2013.12.13
spring 3.2 new features  (0) 2013.06.10
SPDY 공부  (1) 2012.12.14
웹 UI-간단하고 쓸만한 Twiiter의 Bootstrap  (0) 2012.10.05
괜찮은 자바스크립트(js) chart  (1) 2012.10.05
Posted by '김용환'
,

SPDY 공부

Web service 2012. 12. 14. 16:59

SPDY
- 한 개의 TCP Session으로 여러 개의 concurrent HTTP 요청
- Header 압축하여 불필요한 헤더를 제거함으로서 전송량 크기를 줄임
- Multiplex 개념을 추가하고, Priority를 지원
- SSL과 연동 가능.
- Server에서 Client로 하여금 통신을 초기화하고 Push/Hint를 가능케 함. 스트림의 양방향성 확보

 

 

Control frame types
- SYN_STREAM : Session 초기화, Header(pair value) 압축
- SYN_REPLY : Session acceptance  (HTTP status 전달)
- RST_STREAM : Session termination
- PING : Heart beat용
- GOAWAY
- CRENDENTIAL

 

HTTP 2.0 draft에 SPDY 포함되었다는 뉴스
http://www.infoq.com/news/2012/11/http20-first-draft

 

위키피디아
http://en.wikipedia.org/wiki/SPDY

 

IETF문서
http://tools.ietf.org/html/draft-mbelshe-httpbis-spdy-00

 

한글-이해도 높은 문서
http://www.slideshare.net/oddpoet/spdy-13231459

 

크롬 리소스
http://src.chromium.org/viewvc/chrome/trunk/src/net/spdy/
http://www.chromium.org/spdy
http://dev.chromium.org/spdy/spdy-whitepaper
http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3

 

Apache mod_spdy 모듈
https://developers.google.com/speed/spdy/mod_spdy/

 

발표 문서 - A Client-Side Argument for Changing TCP Slow Start
https://a77db9aa-a-7b23c8ea-s-sites.googlegroups.com/a/chromium.org/dev/spdy/An_Argument_For_Changing_TCP_Slow_Start.pdf?attachauth=ANoY7cqyy80oYgzRNysMfRHuk_TT0BqB09432BKRBwOXeDS-rGzPaP7djpHnsMF2grZAeIMByXTEB_cObQiG4N2e1-4ZEZH-VnhEy2JU7beu-_seMvPmxLCxXdkpTdlnOH0auHq31Tx48xFs_120-YNI0XLt71Z-gN4qs6bq0DNLy8rX6yTLThL8GNyPtsyLAI-vNsIpBJqS1h5A69trhJcfV9mpP2RFMe1tPXuO66CnttrzCb3gs3_4AncjwmVthnEv63rI9Iqx&attredirects=0

 

MS 연구소 SPDY와 HTTP 성능 비교
http://research.microsoft.com/pubs/170059/A%20comparison%20of%20SPDY%20and%20HTTP%20performance.pdf

 

크롬에서 SPDY 연결 정보 확인 가능
chrome://net-internals/#spdy

Posted by '김용환'
,

 

쓸만한 UI 작업을 쉽게 도와준다. CSS가 잘 되어 있어 서버 개발자의 센스 없는 UI 라도 멋있게 보여줄 수 있는 특징이 있다. 어드민 UI로 개발했더니 기획자가 버튼 색상이 멋있다고 좋아했다. 나는 그저 참고해서 쓴 것 뿐인데~

 

Twiiter의 Bootstrap

http://twitter.github.com/bootstrap/

 

image

Posted by '김용환'
,

 

오픈소스이면, 업데이트 중이며. 그래프도 예쁘고 직관적이고 편리하게 쓸만한 web쪽 graph chart 발견했다. 다양한 브라우져까지 지원까지 한다.

훌륭하다. (open flash chart, google chart, jqplot보다 훨 나은 것 같다. )

 

http://www.highcharts.com

image

 

http://www.highcharts.com/demo/

image

 

image

 

 

게다가 증권차트도 쉽게 보여준다.

google finance chart 와 같은 양식도 빠르고 쉽게 보여준다.

 

image

Posted by '김용환'
,