개발/Linux,Server 7

Nginx logrotate후에 로깅이 안되는 문제 (Nginx not logging after logrotate)

문제 Nginx logrotate 수행 이후 더 이상 로깅이 안되는 문제가 발생했다. /var/log/nginx/*.log { daily dateext dateyesterday missingok ifempty rotate 90 compress create 640 nginx root sharedscripts olddir /var/log/nginx/backup postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }설정 파일 내용은 위와 같다. 해결 권한을 잘 관리하겠다고 chmod를 빡빡하게 700으로 줬던 게 문제였다. 내부적으로 file reopen이 안되는것 같다. nginx 로그 폴더..

개발/Linux,Server 2022.04.27

맥에서 zip 압축해제 오류 (오류 22 - 유효하지 않은 변수, Illegal byte sequence)

맥에서 zip파일 압축 해제시 오류 22 - 유효하지 않은 변수가 발생했다. 터미널에서 unzip으로 해제시 아래와 같은 오류가 발생한다. $ unzip name.zip error: cannot create -�_+�++����.txt Illegal byte sequence error: cannot create -�_+�++����.txt Illegal byte sequence윈도우쪽에서 특이하게 압축된 파일인경우 발생하는 문제 같다. 귀찮아서 정확히 찾아보지는 않았다. 아무튼 아래 명령어로 해결할 수 있다. $ mkdir result # 반드시 압축 해제할 dir을 만들어야 한다. $ ditto -V -x -k --sequesterRsrc --rsrc ./result

개발/Linux,Server 2020.04.01

우아한 Redis - 강대명

우아한 Redis - 강대명 11월 21일 우아한형제들(잠실)에서 강대명님의 Redis 세미나가 있었습니다. 주요 포인트 Redis는 자료구조가 Atomic 하기 때문에 Race Condition을 피할 수 있다. SortedSet의 Score는 실수형이기 때문에 부동 소수점에 유의하자. 하나의 컬렉션에 너무 많은 아이템을 담으면 좋지 않다. 수천개가 적당함. Expire는 Collection에 걸림 메모리 관리를 잘하자. Swap이 발생하면 메모리 Page 접근시마다 느려짐 큰 메모리를 사용하는 instance 하나보다 적은 메모리를 사용하는 여러 instance 여러개가 안전함 데이터의 사이즈가 다양한 것 보다는 유사한게 유리하다. 메모리를 줄이기 위해서 Ziplist를 이용하자. O(N) 명령어를 ..

개발/Linux,Server 2019.11.21

Nginx에서 upstream서버 keealive 설정

Nginx upstream 웹 애플리케이션 서버를 (Spring, flask..) Container 자체적으로 실행하는 경우는 거의 없고 대부분 nginx에서 proxy 하는 경우가 많다. 이렇게 하면 ssl, auth, cache 등의 요구사항을 쉽게 적용, 변경할 수 있다. 이때 nginx는 client 입장이 되는데, keepalive 설정을 할 수 있다. keepalive upstream 접속에 사용될 connection 수. 각 worker process에서 cache 하고 있으며 최대 수에 도달하면 가장 최근에 사용된 connection이 closed 된다. upstream backend { server backend1.example.com; keepalive 32; } server { loc..

개발/Linux,Server 2019.04.30

Nginx socket 개수 확인

보통 웹 애플리케이션을 구동할 때 nginx + upstream 조합을 많이 이용한다. 이때 nginx 서버는 client, upstream은 server가 된다. Nginx 설정, 성능과 관련하여 TCP 연결 상태를 확인할 때가 종종 있다. $ netstat -napo | fgrep nginx 위 명령어를 이용하면 현재 nginx에서 맺은 연결 정보를 얻을 수 있다. ss 명령어로도 대체할 수 있다. 하지만 두 명령어 결과의 개수가 정확히 일치하지는 않는다. $ ss -natp | fgrep nginx TCP 상태별 개수를 확인하려면 아래 명령어를 이용하면 된다. $ netstat -napo | fgrep nginx | awk '{print $6}' | sort | uniq -c 24 CONNECTED..

개발/Linux,Server 2019.04.26

리눅스 설치일자 확인하기

CentOS6.x에서 리눅스 설치 일자를 확인할 일이 생겼다. 몇 가지 좋은 아이디어를 얻을 수 있었는데 아래 두 가지 방법이 가장 무난해 보였다. 오래 된 파일 확인 리눅스에서 설정 파일이 주로 위치하는 /etc 폴더 하위 목록을 시간 순으로 뽑아낸 결과 $ ls -lact --full-time /etc |tail파일 시스템 생성 일자 dumpe2fs 툴을 사용하여 파일 시스템 생성 일자를 확인한다. $ dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'100% 정확하지는 않더라도 가장 가까운 결과를 얻어낼 수 있을 것 같다.

개발/Linux,Server 2019.04.12

CentOS에서 python3, pip3 설치

Repo 주소 등록 현재 CentOS 배포판에 맞는 주소를 복사한다. 배포판을 확인하는 명령어는 아래와 같다. $ cat /etc/*-release CentOS 6: https://centos6.iuscommunity.org/ius-release.rpm CentOS 7: https://centos7.iuscommunity.org/ius-release.rpm 설치 $ sudo yum install -y 위주소 $ sudo yum install -y python36u python36u-libs python36u-devel python36u-pip $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py PIP 설치 위 명령어로 pip도 설치되기 때문에 별도 설치..

개발/Linux,Server 2019.04.01