반응형

Computer Science/common 7

내부 DDOS 공격에 대한 기록 (JVM OOM)

1. 개요 사내 200명을 대상으로 운영중인 서버에서 2개월 간격으로 서버의 오동작을 유발하였던 OOM이슈를 Agent (Client) 의 cURI session 관련기능을 수정하여 해결하였습니다. 해결방법은 비교적 간단하였으나, JVM OOM 이슈를 분석하고 처리하는 과정에서의 배운점을 기록으로 남김으로써 향후에 발생 할 수 있는 이슈에 원활하게 대응하는데 도움이 될 것이라고 생각되어 포스팅을 작성하였습니다. 2. 본론 제가 사내에서 운영중인 서버는 네트워크 접근관리 서버로써 client-side에 Agent 라는 소프트웨어를 설치하여, 서버에 주기적으로 Agent 활성상태와 보안 터널을 Health check 를 하는 방식으로 동작하고 있습니다. 운영을 시작한지 6개월이 넘어가던 시점에 서버에서 JV..

[Thread] 동기화 이슈 처리방법 (java)

다수의 thread가 동작하는 muti thread는 자원의 충돌을 방지하기위해 '동기화' 에 대응해줘야하는 숙명을 갖고있습니다. 이번 포스팅에서는 java의 synchronized keyword 로 동기화한 소스코드에 대해 살펴보고 메모리 구조 (stack, heap) 까지 확인해보겠습니다. 1. 동기화 1.1 동기화 정의 - 동기화의 사전적 정의는 작업들(task)사이에 수행시기를 맞추는것이며, thread는 데이터의 충돌이 발생하지 않도록 하기 위해 하나의 thread가 자원을 사용하고 있을 경우 해당 자원을 lock 하여 다른 thread의 접근을 막는것을 의미합니다. 1.2 muti thread 자원의 충돌 원인 - 하나의 자원 (=instance)를 다수의 thread가 사용하는 동작 환경으로..

ElasticSearch 개념 및 구조

1. elasticsearch 개념 1.1 정의 - 대용량 데이터를 '실시간에 가깝게' 처리하는 java 기반의 검색 엔진 - 예를들면 하루에 300만 row의 트래픽 데이터가 수집되는 솔루션이라면 RDB가 감당하지 못하기 때문에 elasticsearch을 사용합니다. 1.2 ELK 구성 - ELK : Elastic사 에서 제공하는 Elasticsearch, Logstash, Kibana의 세 가지 오픈 소스 프로젝트 - Logstash : 실시간 로그를 수집/집계/파싱하여 elasticSearch로 전달 - ElasticSearch : db역활 - Kibana : ElasticSearch를 제어하고 데이터를 시작화하는 node.js 기반의 웹 브라우징 프로그램 1.3 elasticSearch 구성 2...

[Thread] muti Process VS muti Thread

지난 포스팅에서 thread에 대해 간단하게 확인해보았으며, 이번 포스팅에서는 muti process, muti thread 의 장단점에대해 확인해보겠습니다. 1. 공통점 - 동시에 두 가지 이상의 루틴을 실행 할 수 있는 역활 2. muti process (멀티 프로세스) 2.1 장점 - 여러 process 중 하나가 죽어도 다른 process에 전이되지 않음 - 현재 수행되고 있는 프로세스를 확인 할 수 있다 (linux 일 경우 ps명령어) 2.2 단점 - 프로세스간에 메모리 공유가 비효율적 - 프로세스간 통신을 위해 IPC를 사용해야함 3. muti thread (멀티 쓰레드) 3.1 장점 - 하나의 프로세스가 다수 개의 작업을 쓰레드로 동시에 동작 할 수 있음 - 스레드간에 메모리 공유가 효율적..

[Thread] 기초

이번 포스팅은 OS관련 기초개념부터 thread 개념까지 확인해보겠습니다. 1. OS (Operating System) 1.1 정의 : Operating은 '운영/가동' 의 의미를 가지고 있으며 IT적으로 해석하면 자원과 프로세스를 운영하는 시스템(=운영체제)을 말합니다. 1.2 용도에 따른 분류 - 개인용 : window - 서버용 : linux (centOS, ubuntu ...) * 참고 : 일반적으로 사용하는 용도에 따른 분류로 절대적이지는 않습니다. * 자원 : data와 유사한 의미 2. program (프로그램) 2.1 정의 : 사전적 정의로는 진행계획이나 순서를 의미하며, IT관점에서의 computer program 은 특정 작업 (task)의 처리 방법과 순서를 기술한 명령어의 집합입니다..

[GIT] git 개념 및 구성

프로그램은 혼자서 독립적으로 개발하기도하지만 다수의 개발자가 팀을 이루어 개발하는경우가 많습니다. 그럴경우 프로그램의 이력관리와 여러 다수의 개발자들간에 협업을 위해 사용하는 GIT의 개념과 구조에 대해 알아보겠습니다. 1. git 개념 1.1 정의 : 분산 버전 관리 시스템 1.2 기능 : 프로젝트의 이력 관리 2. 용어 2.1 Repository (저장소) - project 를 저장하는 directory - 종류 = remote Repository (원격 저장소) : 팀원간의 공유를 위해 사용하는 원격 서버에 저장된 저장소 = local Repository (개인 저장소) : 개인 PC에서 관리하는 개인 PC의 저장소 2.2 commit (확정한다는 의미) - 프로젝트의 변경이력을 local Repo..

data type(자료형)의 개념

이번 포스팅에서는 컴퓨터과학 분야에서 빈번하게 접하게 되는 용어인 data type (자료형) 개념과 종류에 대해 알아보고, 아주 간단한 이미지와 예제소스를 통하여 살펴보도록 하겠습니다. ( * 예제소스는 java를 사용했습니다.) 1. data 와 information 우선 기초 개념인 data(값)에 대해서 알아보겠습니다. data는 어떤 의미일까요? 사전적 정의로는 '관찰이나 측정을 통해 수집된 값이나 사실' 을 말합니다 그리고 information(정보)는 '특정 목적을 위해 data를 가공한 것'입니다. 이해를 돕기위해 구체적인 생활속의 예시로 확인해보겠습니다. 어떤 남자에 대한 data는 다음과 같습니다. [data]신장(cm) : 174체중(kg) : 63 그리고 해당 data를 비만도를 알..

반응형