설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 187건, 최근 0 건
   

postgres.exe 서버 프로세스 갯수 테스트

글쓴이 : 똘이 날짜 : 2018-01-16 (화) 20:41 조회 : 6552
먼저 아래 글에 대한 답변 감사드립니다.

오늘 테스트를 해본 결과 ConnectionIdleLifetime (기본값=300초, 5분) 과 관련이 있었습니다.

postgres.exe 는 DB 오픈시 마다 1개씩 열렸습니다.

using (SqlConnection connection = new SqlConnection(serverConnectionString))
{
try
{
connection.Open(); ---> 이때 서버에서 postgres.exe 생성됩니다.
connection.Close();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "DB 접속 오류");
return false;
}
finally
{
Cursor.Current = cur;
}
}

제가 개발 중인 프로그램의 경우는 UnitOfWork 를 사용하기 때문에
그리드당 DB 오픈을 하게 됩니다.

보통 화면당 6개 정도 postgres.exe 가 실행되고
100명이 동시 접속한다고 가정하면 600개의 postgres.exe 가 5분간 실행될 것입니다.

그래서 아래 코드처럼 ConnectionIdleLifetime = 3; 으로 지정하고
실행시키니 3-5 초뒤에 postgres.exe 가 모두 종료되었습니다.

public static NpgsqlConnection ConnectNpgsql(string host, int port, string userName, string password, string database)
{
var builder = new NpgsqlConnectionStringBuilder();
builder.Host = host;
builder.Port = port;
builder.Username = userName;
builder.Password = password;
builder.Database = database;
builder.ConnectionIdleLifetime = 3; // 3 초뒤 postgress.exe 종료시킵니다.
builder.ApplicationName = database;
return new NpgsqlConnection(builder.ToString());
}


결국 동시 접속 사용자 수가 많은 경우는 ConnectionIdleLifetime 을 최대한 줄여서
postgres.exe 를 종료되게 하는 것이 맞지 않을까 판단됩니다.

postgreSQL 초보자 인지라 이 방법이 맞는지 모르겠습니다.

감사합니다.

PostgresDBA 2018-01-17 (수) 02:13
아래를 심각하게 고려해보세요^^

1. http://www.npgsql.org/doc/connection-string-parameters.html?q=connection%20pooling
NpgSQL 의 connection pooling 옵션

2. pgbouncer 라는 connection pool 유틸도 있습니다.
댓글주소
똘이 2018-01-17 (수) 15:10
좋은 정보 감사드립니다.^^
댓글주소
   

postgresdba.com