잘은 모르지만 생각나는데로 몇자 적습니다.
1. connect_timeout
값이 0이면 아마 찍어서 연결이 쭉 지속되는걸겁니다.
간혹 db에 접속한 놈들이 정상적이 세션종료없이 죽으면
네트워크는 살아있죠
보통 쿼리는 수초내에 이뤄질겁니다. 넉넉히 30으로 해놓으면
보통 30초를 넘는 쿼리는 없다 가정하고, 강제로 세션을 종료...
2. 시스템 리소스 조정
시스템 관리자라면 잘 아실겁니다.
/etc이하 어딘가에 있는 커널 파라미터중에
file description max값을 조정하는게 있을겁니다.
아마 기본으로 1024걸요?(sun 경우)
이걸 두배로 잡으면 시스템으로 해결...
3. max_connections
아래 100은 3500장비라면 넘 작은게 아닐까요?
수백명이 동시 접속해도 괜찮을것 같은데...
생각나는데로 몇자 적었습니다.
꼭 참고만 하세요. 정답은 아닙니다.
-- 천지혜 님이 쓰신 글:
>> 저희가 하는 서비스 중에서 한편에서는 관리자 화면에서 30명 정도가 수십개에서 많게는 수백개의 값들을 디비에 업데이트를 하고, 또 다른쪽에선 유저들이 하루에 몇천명 정도 접속을 하는데요...
>> mysql이 자주 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)메세지를 내면서 죽거나 connections ended하는 메세지를 내면서 죽습니다..
>> 저희가 웹서버가 두대인데요..많은 유저들이 접속했을경우를 대비해서 로드밸런싱을 시켜났긴 했지만, 웹서버는 죽는 일이 없는데...mysql일 하루에두 몇번씩 아주 느려지다가 죽어버리거든여...디비가 이렇게 죽으면 안되자나요....엔터프라이즈 3500에 mysql을 깔아났는데...엔터프라이즈 장비라 장비 자체의 성능 문제는 아닌거 같구요(개인적으로 엔터프라이즈에 mysql은 좀 아깝지만...)그렇다면 mysql이 위에서 제가 설명했던 상황을 수용 못하는것인지 아니면 제가 mysql세팅에서 몬가 잘못했는지 모르겠습니다..
>>
>> 현재 대강의 설정들은
>> connect_timeout current value: 0
>> max_allowed_packet current value: 16777216
>> net_buffer_length current value: 16384
>> select_limit current value: 1000
>> max_join_size current value: 1000000
>> max_connections current value: 100
>> 으로 되있거든요..
>>
>> 답변 부탁드립니다..
|