Server

기존의 로그 테이블은 단순히 

date : bigint

ip : varchar(45)

인 구조였습니다. (index 없음)


이번에 관리자용 Log View를 만들면서 데이터 조회에 몇 분씩 소요되는 것이 큰 문제라 생각하여(나중에는 조회조차 안됐습니다. 아마존 라이트세일이 CPU 사용에 제한을 걸어서 그렇다네요.) 로그 테이블을 완전히 재설계했습니다.


일단 Log View의 주 내용은 지금까지 몇 개의 요청이 들어왔는지, 월별로 몇 개의 요청이 들어왔는지를 보여주는 것이기 때문에 시간에 index를 걸었습니다.

그리고 ms단위까지는 필요하지도 않기 때문에 ms단위를 떼버리고 초단위까지만 64bit timestamp를 저장하도록 했습니다.

int unsigned를 사용하였고, 최대 2106년 2월 7일 15시28분15초까지 저장가능합니다. 

현재 구조는

date : int unsigned

ip : varchar(45)

로, 적어도 몇MB이상을 절약했다고 생각됩니다.

'Server' 카테고리의 다른 글

로그 테이블 임시 정리  (0) 2018.08.31
서버 이전 후 MariaDB Connection 오류 관련 후기  (0) 2018.08.26

아마존 라이트세일로 옮기고 자꾸 DB가 터지는 것이었습니다.


No connection. Trying to reconnect...

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

ERROR: Can't connect to the server

[2018-08-26 22:33:16] [08][-1] (conn=10) (conn=10) Could not connect to address=(host=###.###.###.###)(port=3306)(type=master) : Connection refused: connect

[2018-08-26 22:33:16] java.net.ConnectException: Connection refused: connect


알고봤더니 라이트세일요금제를 한달 무료 + 월 3.5$에 메모리 512MB를 제공하는 요금제를 사용하고 있었는데, 메모리가 부족해서 생긴 해프닝이었습니다. (1.5시간이 저 멀리로~)

swap 메모리를 256MB 주니 해결되었습니다.

'Server' 카테고리의 다른 글

로그 테이블 임시 정리  (0) 2018.08.31
서버 이전 후 MariaDB Connection 오류 관련 후기  (0) 2018.08.26

+ Recent posts

티스토리 툴바