반응형

All 197

Connection Pool 사용 시 release() 코드 위치의 중요성

관리하고 있는 채팅 시스템이 있는데 데이터베이스 연결 시 Connection Pool을 사용하고 있습니다. 코드는 커넥션을 얻고, 데이터베이스 결과값을 가져온 후에 다시 커넥션을 반환하는 과정으로 작성되어 있습니다. 커넥션 반환 문제 그러던 중 커넥션 풀을 사용할 때 문제가 생겼습니다. 커넥션이 계속 증가하고 있었는데, 그러다보니 커넥션 수 제한에 걸려서 서버 오류가 발생하기도 했습니다. 이 문제를 해결하기 위해 pool 생성할 때 connectionLimit을 크게 올려보기도 했지만 채팅 서버에서는 오류가 나지 않지만, DB서버 과부하로 처리가 매우 느려졌습니다. 마찬가지로 max_connections, wait_timeout 도 변경했지만 사용량이 많을 때는 속도가 상당히 떨어졌습니다. 그래서 이런 ..

Programming/Node.js 2023.09.22

프로그래머스 - 공원 산책 JAVA :: 172928

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 문제 이해하기 시작은 어떤 공간에서든 할 수 있다. 대각선으로는 이동할 수 없고, 동서남북으로만 이동할 수 있다. 장애물이 있는 곳으로는 이동할 수 없으며, 이동할 수 없는 경우는 해당 명령은 아예 취소한다. 외부로 벗어나는 경우는 이동할 수 없으며, 이동할 수 없는 경우는 해당 명령은 아예 취소한다. 문제 풀이 boolean[][] parkFull = new boolean[park.length][park[0].length()]; int x = 0, y = 0; int xWall = parkFull.length, yWall = parkFull[0].length; for(int i..

Algorithm/Java 2023.08.24

프로그래머스 - 햄버거 만들기 JAVA :: 133502

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133502 문제 이해하기 재료의 순서는 무조건 [빵, 야채, 고기, 빵] 순서가 되어야 하고, 그 재료를 빼더라도 남은 재료의 순서는 보존해야 하는게 핵심입니다. 예제를 보면 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵] 3번째부터 [빵, 야채, 고기, 빵]이 첫 번째 햄버거가 됩니다. 첫 번째 햄버거의 재료를 제외하면 [야채, 빵, 야채, 고기, 빵]이 남게 됩니다. 2번째부터 [빵, 야채, 고기, 빵]이 두 번째 햄버거가 됩니다. 재료가 담긴 배열을 순서대로 수행하면서 햄버거가 완성되면 재료를 빼고 기존 재료들은 기억하고 있으면서, 다음 재료를 순서대로 가져오면 됩니다. 예..

Algorithm/Java 2023.08.02

메모리가 부족한 AWS Lightsail에서는 스왑 공간을 활용하자

AWS Lightsail을 사용중이라면 보통 개발용서버 또는 간단한 용도일텐데, 조금만 무거운 작업을 실행하면 메모리 부족 현상을 만나게 됩니다. (저는 React 빌드를 하려고 하는데 메모리 부족 현상을 만났습니다.) 이를 해결하기 위해서 swap space를 활용해 디스크의 일부를 가상 메모리로 사용하여 물리적인 메모리 공간이 부족할 때 시스템이 사용할 수 있는 추가적인 메모리로 활용했습니다. swap space swapfile 생성 sudo fallocate -l 2G /mnt/swapfile 경로는 원하는 경로로 지정하면 됩니다. swapfile 권한 설정 sudo chmod 600 /mnt/swapfile swap space 설정 sudo mkswap /mnt/swapfile swap 활성화 s..

AWS Lightsail에서 파이썬 여러 버전 관리 및 사용 :: pyenv

pyenv 여러 버전의 Python을 사용하기 위해서 pyenv를 사용했습니다. AWS Lightsail에서는 pyenv를 설치하기 위해서 사전에 설치해야 할 패키지가 있습니다. 먼저 설치해야 할 패키지 sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl11 openssl11-devel xz xz-devel libffi-devel findutils tk-devel -y 각 패키지가 필요한 이유 @development 이 패키지 그룹은 일반적인 개발 도구 및 라이브러리(예: gcc, make 등)를 포함하고 있습니다. Python을 소스에서 빌드하려면 이러한 도구가 필요합니다...

AWS Lightsail에서 React 빌드&배포 시 멈추는 현상 (메모리 부족)

원인 AWS Lightsail에서 테스트 삼아 React를 빌드하려고 했는데 빌드가 완료되지 않고 계속 멈추는 현상이 발생했다. 내 인스턴스의 RAM은 512MB인데, React는 빌드 시 규모가 조금만 커져도 메모리 부족으로 빌드가 멈춰버리는 현상이 생기는 것이다. 아마 Lightsail 뿐만 아니라, 다른 서버도 RAM 용량이 부족하면 같은 현상을 겪을 것이다. 해결 방법 스왑메모리 설정 부족한 RAM 용량을 DISK의 용량으로 대체하는 방법이다. 당연히 DISK를 사용하는 것이기 때문에 성능면에서는 현저하게 떨어지지만 메모리 부족으로 인해 빌드가 중단되는 현상은 해결할 수 있다. 운영용으로는 부적합하지만 테스트 할 때에는 사용하기 좋다. $ sudo dd if=/dev/zero of=/mnt/swa..

Amazon Linux 서버에서 Selenium 사용하기

AWS Amazon Linux 2 환경에서 google-chrome-stable 패키지로 설치하려 했으나, “gpg-key” 관련 오류가 지속적으로 발생하고, 이를 무시하려고 해도 “Segmentation Fault” 오류가 발생 해당 오류를 해결하려고 많은 시간이 소요되어 기록함. 서버 환경 NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/"명령어 $ cat os-release 로..

Python Web Scraping :: PS Plus 게임 카탈로그 만료일 추출하기

목적 PS Plus 게임 카탈로그는 영구적으로 등록되는 게임이 아니다. 위 이미지에 ‘2023/2/22 오후…’ 처럼 만료일이 정해져 있는데, 만료일은 3개월 이내가 되면 사이트에 노출되어 확인할 수 있다. 그러나 만료일이 예정된 것만 따로 찾아볼 수 없으며, 리스트에서 직접 하나씩 눌러서 확인해야 하기 때문에 어떤 게임이 만료되는지 확인하기 매우매우매우 귀찮다. (약 250~300개의 게임을 모두 눌러서 확인해야 한다…) 그래서 웹스크래핑으로 모든 게임들의 목록과 PS4/PS5 지원 여부도 추출하고, 그 중에서 만료 예정일도 함께 추출하는 것이 목적이다. 기획 웹 스크래핑으로 PS Store 게임 카탈로그(https://store.playstation.com/ko-kr/category/05a2d027-..

Programming/Python 2023.01.09

프로그래머스 - 개인정보 수집 유효기간 JAVA :: 2023 KAKAO BLIND RECRUITMENT :: 150370

문제 문제 링크 코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다.당신은 오늘 날짜로 파기해야 할 개..

Algorithm/Java 2023.01.09

프로그래머스 - 크기가 작은 부분 문자열 JAVA :: 147355

문제 문제링크 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 ..

Algorithm/Java 2022.12.23
반응형