504 Gateway Time-out 문제의 원인과 해결 방법

HYEONG HWAN, MUN/ 9월 16, 2019/ 미분류/ 0 comments

검색해봤는데, 마음에 드는 설명글이 없어서, 제가 하나 작성해봅니다. 이 504 Gateway Time-out 오류는 리버스 프록시 프로그램에서 < == > 해당 프록시(upstream)와의 통신이 오래걸렸고, 리버스 프록시 프로그램에서 지정한 시간 제한을 초과해서 발생한 오류입니다. 리버스 프록시 프로그램은 거의 99% nginx 를 사용하므로, 이 글에서는 nginx 기준으로 설명하겠습니다. 504 Gateway Time-out 오류는 아래와 같은 형태로 나타납니다. < 그림 : nginx 에서 504 오류 화면 > 504 Gateway Time-out 504 Gateway Timeout HTTP 504 504 ERROR Gateway Timeout (504) HTTP Error 504 – Gateway Timeout Gateway Timeout Error 504 Gateway Time-out The server didn’t respond in time   게이트웨이란? Gateway 게이트웨이는 (통신 분야에서) 서로 다른 네트워크 연결을 위한 출입구를 의미합니다. 단어 자체는 관문, 출입구라고 번역됩니다. 한 지역과 다른 지역을 연결하는 톨게이트나, 빌딩 건물과 외부를…

빅데이터 처리 후기 (검색엔진 처리)

HYEONG HWAN, MUN/ 8월 26, 2019/ 미분류/ 0 comments

빅데이터 처리 후기를 써본다. 진행 중인 사항이기 때문에 후기보다는 경과보고가 맞는것 같다. 이 글은 검색엔진 최적화(SEO)와 관계가 없다.   1. DB 설계를 최적화 해야할 것 (쿼리의 최적화) 이게 무슨 뜻이냐면, 쿼리를 아주 단순하게 날릴 수 있어야 한다는 것이다. SELECT, FROM, JOIN ON  막 이렇게 복잡하게 날리면 복잡도가 늘어난다. DB를 처음배울때 중복을 제거하는 정규화라는 것을 배우는데, 이 정규화를 깨버리면 성능이 올라간다. 물론 중첩에 대해서는 관리를 잘 해주어야한다. 쿼리는 되도록 PK 가 포함되도록 요청하는게 좋고, 조금만 복잡해 질것 같으면 SQL 에서 조건 제외하고, 실행 결과를 받아서 프로그램단에서 처리해야 한다.     2. 페이징 최적화를 해야할 것 전체 document 의 개수가 10만건이 넘었을 때, 2만 이상의 index 를 실행하면 응답이 매우 느린 것을 알 수 있다. 즉 페이지당 글이 15개이고, 1001 페이지를 불러올…

RDP Error code: 0x4 오류 해결하기

HYEONG HWAN, MUN/ 8월 6, 2019/ 미분류/ 2 comments

예전에 쓴 글 “windows 계정 로그온 기록하기” 에 이어서 작성하는 글이다. 접근제한이 잘 설정된 서버에, 로그인 실패가 발생했는데, 문제가 잘 해결되지 않아, 조금 더 찾아보았다.   증상은 이렇다. 아래의 에러 메세지가 뜨면서 Windows 서버로의 원격접속이 되지 않는 것이다. Your session ended because of an error. If this keeps happening, contact your network administrator for assistance. Error code: 0x4   < Mac 에서 표시되는 메세지 >     < Windows 에서 표시되는 메세지 >   우선 위의 상태가 되었을때 서버 접속을 할 수 있는 방법은 없다. 이 상태를 푸는 방법은 1)직접 해당 PC 콘솔로 접근하거나, 2)TeamViewer 같은 원격접속 프로그램으로 콘솔로 접속하여 로그인 한번 하면 해결된다. (재부팅 필요없음.) 이렇게 콘솔화 접근 이외에는 방법이 없다.  (또는 원격 재부팅을 통해 해결할 수도 있다.) 그동안은…

아마존 AWS 다이어그램 Diagram

HYEONG HWAN, MUN/ 7월 28, 2019/ 미분류/ 0 comments

하루의 시간을 투자하여, 관리 중인 어느 시스템의 구성도를 그려보았다. 정석적인 시스템 구성도라고 생각하면 된다. 그림은 단순하지만, 세팅은 그리 단순하지 않다. 아래의 다이어그램 이미지는 참고하는 용도로만 사용하길 바란다. 위의 모든 용어 및 아이콘 이미지는 다음 위치에서 참고하였다. https://aws.amazon.com/ko/architecture/icons/ AWS 는 이런 다이어그램을 그리는 것을 지원하고 있다.   # 19.08.09 : 시스템 구성이 달라져서 다시 그려야 한다. 다시 그리게 된다면 공유하도록 하겠다.    

리더(Leader)와 보스(Boss)의 차이

HYEONG HWAN, MUN/ 7월 28, 2019/ 미분류/ 0 comments

  21세기의 좋은 개발자는 자기만 잘하면 되는게 아니라, 언어적 의사소통(알려주기)이나 비언어적 의사소통(문서화)을 사용하여 주변에 도움(+)을 주어야 합니다. 주변에 도움을 주면서 나아가려고 한다면 Leader 이고, 도움 없이 앞으로 나아가려 한다면 Boss 입니다. 아래 그림을 통해 ‘도움’, ‘리더’, ‘보스’에 대해서 느껴보도록 합시다.     대학 학부생 때는 그래도 주변에 Leader 가 어느정도 있었는데, 대학 졸업 이후에는 Leader 를 보기가 힘드네요.   여러분도 멋진 Leader 를 만나셨으면 좋겠고, 또 멋진 Leader 가 되어주세요!  

Proxy 환경에서 Real IP 설정하기 (AWS ELB, Load Balancer, CloudFlare)

HYEONG HWAN, MUN/ 7월 7, 2019/ 미분류/ 0 comments

검색해 봤는데 잘 정리된 글이 없어서 작성해본다. 이 글에서는 여러 프록시 서버(로드밸런서, AWS Elastic Load Balancer, Web Application Firewall, CloudFlare) 환경에서, 실제 사용자의 IP 를 올바르게 처리하는 방법에 대해 알아볼 것이다.   1. Proxy 의 뜻 noun 1. 대리 2. 대리권 adjective 1. 대리의 2. 대리권의 Google 사전에 따르면 Proxy는, 명사, 형용사로 대리, 대리인, 대리권 등을 뜻하는 단어이다. 컴퓨터 기술에서는 대신하여 작업을 처리하는 프로그램 또는 서버를 뜻한다.   2. 프록시 서버의 동작 레이어 프록시 서버는 Client <=> Server 사이에서 동작한다. 패킷을 완전히 분석한 후에 동작하는 프로그램/서버 이기 때문에 Application Layer 에서 동작하며, L7 Proxy 라고도 부른다. 프록시 처리에는 서버 자원을 거의 소모하지 않기 때문에, 1:N 프록시의 – Load Balancer 형태로 주로 사용된다. (한대의 프록시 서버가 다수의 서버에 연결하여 동작)  …

Ubuntu 18.04 다중 IP 설정

HYEONG HWAN, MUN/ 7월 5, 2019/ 미분류/ 0 comments

기존의 Ubuntu 16.04 에서는 /etc/network/interfaces 파일을 수정하면 되었는데, 18.04 부터 netplan 이라는 파일로 변경되었더라. 서버의 네트워크 작업은 만약의 상황을 위해 콘솔을 사용할 수 있는 환경에서 진행되어야 한다.   IP 주소 설정 # vi /etc/netplan/50-cloud-init.yaml   기본적으로 netplan 우선 순위는 50 으로 설정되어 있다. yml 문법이다. indent(들여쓰기)는 2 space 이다. 문법에 맞추어서 작성해보자. network: ethernets: eth0: addresses: – 121.131.72.199/28 dhcp4: false gateway4: 121.131.72.206 nameservers: addresses: – 168.126.63.1 – 168.126.63.2 search: [] eth1: dhcp4: true version: 2   변경 적용하기 # netplan apply   즉시 적용된다.     다음의 명령어도 한번쯤 실행해 보면 좋다. 라우팅 테이블 보기 # route -n  

Windows 환경에서 port forwarding 구현하기

HYEONG HWAN, MUN/ 6월 13, 2019/ 미분류/ 0 comments

Windows 10, Windows Server 2012 운영체제에 내장된 netsh 라는 프로그램을 사용하여 포트포워딩을 해 보겠다. – 리눅스의 경우 : https://blog.lael.be/post/69 글을 참고하길 바란다.   Windows 운영체제에서 키보드 [WIN] + X 를 누르면 특수 메뉴가 나타난다. 이 메뉴에서 Windows Powershell(관리자)을 클릭한다.   리눅스 처럼 TAB 키를 활용한 자동완성이 안되기 때문에, 반드시 모든 명령어를 잘 입력해야 한다.   응용프로그램 단계에서 포워딩되므로 L7 이며, netsh 프로그램이 패킷을 받았다가 전달하는 거라서, 전송지의 아이피가 바뀌게 되므로, 엄밀히 말해서 forwarding이 아니라 proxy 이다.   모든 포트 포워딩 보기 (show port proxy) netsh interface portproxy show all < 그림 : 이 서버는 port 8082 번을 Listen 해서, 로컬 네트워크의 192.168.99.252의 8082 로 포워딩하고 있다. >   포트 포워딩 해제 ( delete port proxy ) 위의 show all 에서…

git 에서 line break (crlf, lf) 관리하기

HYEONG HWAN, MUN/ 5월 16, 2019/ 미분류/ 0 comments

텍스트 파일을 다룰 때 정해야 할 사항이 두가지가 있다. 하나는 언어셋(charset)이고, 다른 하나는 줄바꿈(line-break)이다. 다행하게도, 요즘의 대부분의 사람은, 파일 언어셋을 utf-8 으로 사용한다.   그렇다면 우리는 줄바꿈(line break) 만 관리하면 한다. 줄바꿈 (line break, line ending, line feed) 문자. 줄바꿈 문자는 Windows 와 Linux(Mac) 의 처리가 다르다. Windows 는 CR(캐리지 리턴) + LF(라인피드)를 새 줄로 간주한다. Linux 는 LF(라인피드)를 새 줄로 간주한다.   이것은 과거 컴퓨터 시스템에서 사용하던 타자기(type writer) 때문에 발생하는 것이다. 캐리지리턴(carrige return) : 캐리지(타자기의 커서)를 원래위치로 되돌리는 작업 라인피드(line feed) : 종이를 감아서 줄을 넘김 CRLF : 캐리지를 되돌리면서 줄을 넘김. 요즘의 처리 방식. 요즘은 디지털의 시대라서, typewriter 처럼 캐리지를 처음으로 옮기는 작업이 필요 없다. 즉, 캐리지리턴이 필요 없다! (CR을 무시하는 추세임.) (여러분이 여러 많은 언어에서 줄바꿈…

흑자부도, 월세파산, 전세파산 시대가 왔다.

HYEONG HWAN, MUN/ 5월 16, 2019/ 미분류/ 2 comments

이 글은 – 20대들아, 우리나라 미래는 필리핀이다 (https://blog.lael.be/post/156) , 대공황기의 49가지 생존전략 (https://blog.lael.be/post/5604) 글과 연관이 있다고 볼 수 있다. 인터넷상의 이런 저런 글을 읽던 중, 괜찮은 논설 글이 있어서 이곳에 옮겨본다. 아래의 글은 월세투자자는 바보투자자다 라는 책에 나오는 글이며, 저자는 손대식 (sohn2738)님 이다. 책 구매 링크는 여기 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=186978442   라엘이의 한마디 원문을 약간 다듬어서 옮겼습니다. 글의 흐름에 맞지 않거나, 거친 표현은 뺐습니다.   미리 알아 둘 경제 용어 몇가지 경제 용어 뜻을 알아보자.   – 환금성 (換金性) 물건(物件)을 팔아서 현금화(現金化)할 수 있는 성질(性質). 이 용어는 부동산에서 많이 쓰이는데, 부동산이 “의식주”의 주거 공간으로 보면 상관 없는데, 사고팔고 차익을 남기는 투자(투기)로 보면 중요한 요소이다. 즉, 부동산을 주거공간으로 보기보다, 투자대상으로 보는 경우, 얼마나 현금(돈)으로 잘 바꿔지는지가 중요하며, 이것이 바로 환금성 이다.  …

windows 계정 로그온 기록하기

HYEONG HWAN, MUN/ 5월 3, 2019/ 미분류/ 0 comments

개발용으로 쓰는 Windows 머신이 있는데, 오늘 갑자기 RDP 연결이 안되더라.   디버그를 위해 콘솔로 접속 후 이벤트 뷰어를 보았다. 이벤트 뷰어에 표시된 에러 메세지는 아래와 같았음. RD 세션 호스트 서버가 불완전한 연결을 많이 받았습니다. 시스템이 공격을 받을 수 있습니다. Event ID 는 1006 번.   그런데 이 머신은 방화벽 설정이 잘 되어있고, 나 이외에는 접속하는 사람이 없다. 네트워크 통신을 확인해 보았는데, 이상한 연결도 없었다.   아무튼 내가 취한 조치사항은 아래와 같음. 1) 운영체제 업데이트 2) 윈도우 로그인 기록 남기기. (성공, 실패 모두)     Windows 계정 로그온 기록하는 방법 시작 -> 실행 -> gpedit.msc 로컬 그룹 정책 편집기가 켜진다. (이 Group Policy 를 수정해서 윈도우의 많은 부분을 튜닝할 수 있다. 웹서버나 미디어 서버 운영할 때, 통신 속도제한 거는 기능을 설정하면…

jmeter requirement

HYEONG HWAN, MUN/ 4월 25, 2019/ 미분류/ 0 comments

웹서비스의 스트레스 테스트 및 동접 부하 테스트를 진행중임.   테스트 도구는 순간 동시요청 숫자와 비례하게 CPU 를 사용한다. 너무 저렴한 머신을 사용하지 말것. 머신은 일반적인 i7 급 성능은 나와주어야 한다.   테스트는 Windows OS 머신에서 진행했음.   네트워크 튜닝이 필요했음. 관련 가이드 문서를 읽고 수정을 진행함.     1. 사용가능한 포트 범위 확장 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters MaxUserPort 라는 DWORD 타입의 값을 추가하고 65534 를 입력. 기본값은 5000 이다. (일부 운영체제는 기본값이 16384)     MaxUserPort Key: Tcpip\Parameters Value Type: REG_DWORD—maximum port number ValidRange: 5000–65534 (decimal) Default: 0x1388 (5000 decimal) Description: This parameter controls the maximum port number used when an application requests any available user port from the system. Normally, short-lived ports are allocated in the range from 1024 through 5000. Setting this parameter to a value…

소멸위험지수와 재정자립도

HYEONG HWAN, MUN/ 4월 11, 2019/ 미분류/ 1 comments

시사 상식 글입니다. 2018년 한국의 합계출산율은 0.98명 입니다. 즉, 남자와 여자가 만나서 출산이 이루어지므로, 합계출산율이 2명이면 인구수가 그대로 유지됩니다. (자연 사망율이 0일 경우) 합계출산율이 1 이 되면 인구가 반으로 줄어들겠죠. 그런데 1보다 낮아지면 인구가 빠르게 줄어듭니다. 출생아 수가 낮고, 의학기술 발달에 의한 기대수명이 높아져 고령자가 많아지기 때문에, 초고령화 사회가 됩니다.   그건 그렇다고 치고, 그렇다면 “어느지역이 고령화 되었나” 라는 수치도 필요하게 됩니다. 따라서 이 소멸위험지수라는 개념이 등장하게 되었습니다. 이 지수를 사용하여 늙은 지역와 젊은 지역을 알 수 있습니다. 너무 늙은 지역은 인구가 소멸하게 됩니다. (빠르게 줄어듬)   소멸위험지수 (만 20세 ~ 만 39세 여성인구) / 만 65세 이상 고령인구수 – 여성 1명이 있고, 고령 1명이 있으면 소멸 위험지수는 1이 된다. – 여성 2명이 있고, 고령 1명이 있으면 소멸 위험지수는 2가…

git 에서 특정 파일만 추적하고 싶지 않을때 untrack production file

HYEONG HWAN, MUN/ 4월 5, 2019/ 미분류/ 2 comments

프로젝트의 환경설정 파일을 추척하지 않는 방법에 대해 설명한다.   이런 방법에는 2가지가 있음 assume-unchanged 와 skip-worktree 가 있음.   사용법 FILENAME 을 (또는 폴더를) 변경되지 않는다고 가정함. git update-index –assume-unchanged FILENAME 프레임워크나 sdk 등의 폴더에 설정한다. 이 폴더는 “변화하지 않았다고 가정” 하는 것이다. php 의 vendor(composer), nodejs 의 node_modules 폴더에 적용하면 된다. assume-unchanged 가 설정되면 해당 파일폴더를 변경검사하지 않는다. 이것은 git 비교의 성능향상의 목적이 있다. 만약 assume-unchaged 파일폴더가 변경되었고, 커밋되었다면 (새로운 파일이 추가되었거나 변경되면), 자동으로 assume-unchanged 플레그가 해제되고 변경을 확인하게 된다.   다시 추적하기 git update-index –no-assume-unchanged FIL_NAME   사용법   절대로 변경을 추적하지 않는 것이다. 변경이 생기면 flag 가 자동으로 풀리는 assume-unchanged 와 달리, skip-worktree 는 해당폴더의 파일(폴더가) 변경이 생겼더라도 flag 가 유지된다. git update-index –skip-worktree FILENAME   다시…