반응형
Mysql Pool
이번에 사용 하는 클라우드 서버는
Mysql 설정 파일을 바꿔도 윗단에서 커넥션을 빠르게 끊어버리는 바람에 문제가 되었습니다.
맨 처음에는 setInterval와 end 함수의 콜백을 이용해 특정 시간이 될 때마다
커넥션을 모두 끊고 다시 연결을 만들도록 했었는데요.
그래도 어느 순간이 되면 커넥션 에러가 발생 했습니다.
다음 시도는 Mysql-simple-pool모듈을 사용 하는 것이었습니다.
저번에 Mysql-simple-pool에 관해 포스팅을 한 적이 있었죠.
그런데 사용시 전에는 없었던 문제가 생겼습니다. 그것은 쿼리를 처음 할 땐 에러가 난다는 것이었죠.
쿼리를 몇 번 하고 나서야 에러가 안나고 잘 처리 되었습니다.
여러가지 해결 방법을 찾아보다가 Mysql모듈도 Pool을 지원한다는 사실을 알게 되었습니다.
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 29 30 31 32 33 34 35 36 | var mysql = require( 'mysql' ); var mysqlConfig = { host: "아이피" , port: "포트" , user: "아이디" , password: "암호" , database: "데이터베이스" }; var pool= mysql.createPool(mysqlConfig); pool.getConnection( function (err,connection){ connection.query( "쿼리" , function (err,rows){ //rows를 처리할 내용 //release를 해주어 커넥션이 pool로 되돌아 갈 수 있도록 해줍니다. connection.release(); //이제 이 커넥션은 pool로 돌아가 다른 주체가 사용 할 수 있도록 준비합니다. }); }); //추가사항 : 이렇게 해줘도 끊기는 현상이 발생 할 때가 있었습니다. //이건 최후의 방법인데 특정 시간마다 연결했다 끊는겁니다. //저는 결국 이 방법으로 해결했습니다. function keepAlive(){ pool.getConnection( function (err, connection){ if (err) { return ; } connection.ping(); connection.release(); }); //redis client를 사용중이라면, 아마 Redis연결도 빠르게 끊길겁니다. //client.ping(); // 라고 해주면 Redis연결도 유지합니다. } setInterval(keepAlive, 60*1000); |
출처: http://blog.mygentle.com/2013/11/nodejs-mysql.html
반응형
'Tech develop > Node.js' 카테고리의 다른 글
[node.js]외부 url에서 xml 파싱하기 (0) | 2014.09.16 |
---|---|
[node js]http get 파라미터 post 데이터 값 구하기 (0) | 2014.08.19 |