개발

자바, 파이썬 중심의 실무 개발 기록과 도구 활용, 회고 및 기타 기술들을 정리합니다.

자바

TomEE + IntelliJ IDEA – DataSource 설정 방법

사진: Unsplash의Jari Hytönen 상황 Eclipse와 IntelliJ IDEA에서 여러 애플리케이션을 개발하고 있다.  J2EE 서버로는 TomEE를 사용하고 있다.  여러 애플리케이션은 서로 다른 DataSource를 사용하고 있다.  문제 TomEE는 하나만 설치하고 모든 애플리케이션이 공동으로 사용하고자 한다.  공동으로 사용하는 TomEE에 개별 애플리케이션을 위한 설정을 넣고 싶지 않다.  IDE에서 개별 애플리케이션을 위한 DataSource를 설정할 수 있을까?  방법 IDE 내에 있는 개별 […]

기타 개발

JMeter, 원격 분산 테스트 수행 방법

구성도 Controller 역할 Worker들의 시작과 종료를 관리한다.  Worker들의 테스트 결과를 수집한다.  Worker 역할 부하를 발생시킨다.  2-3GHz CPU 기준 1,000에서 2,000 쓰레드가 적당하다.  테스트 결과를 Controller로 보낸다.  실행방법 성능테스트는 CLI 모드에서 실행한다.  Worker 노드에 있는 JMeter 들을 server 모드로 실행한다.  1 2 3 4 [pluto@pluto jmeterWorker1]$ SERVER_PORT=2001 ./jmeter-server Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.100.11:35825](local),objID:[-30cxxx5a:188xxxx9e1a:-7fff, 106xxxx542xxx03868]]]   Colored by Color Scripter cs 기본 포트(1099)를 다른 프로그램이

기타 개발

JMeter, Cannot start. localhost.localdomain is a loopback address.

상황 리눅스 서버에서 JMeter를 이용하여 테스트를 수행하고 있다.  테스트 시나리오를 완성했다.  Controller와 Worker를 구성했다.  테스트를 시작하자마자 에러를 만났다.  Worker 노드 실행 실패 1 2 3 4 5 [pluto@localhost jmeter]$ cat jmeter1.log Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:42423](local),objID:[–a1u8750:1882XXXd751:–7fff, 7754627XXX208166]]] Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address. An error occurred: Cannot start. localhost.localdomain is a loopback address. [pluto@localhost jmeter]$ Colored by Color Scripter cs /etc/hosts 파일이 의심스럽다.  에러 메시지를 보니, hosts 파일이 의심스러웠다. 확인해 보자.  1 2 3 4 [root@localhost etc]# cat hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

기타 개발

JMeter, TCP, java.net.ConnectException: 요청한 주소를 배정할 수 없습니다 (connect failed)

사진: Unsplash의Jacek Dylag JMeter로 소켓 프로그램의 성능 테스트를 하고 있다.  구성은 다 된 것 같은데, 에러가 20% 이상 발생하는 경우가 있다.  에러는 JMeter로 부하를 발생시키는 장비에서 난다.  에러도 특이하다. 요청한 주소를 배정할 수 없다고 한다.  1 2 3 4 5 6 7 8 9 10 11 12 13 14 java.net.ConnectException: 요청한 주소를 배정할 수 없습니다 (connect failed)         at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_372]         at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_372]         at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_372]         at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_372]         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_372]

기타 개발

성능 테스트, 네트워크 데이터 처리량 이슈

사진: Unsplash의Eeshan Garg JMeter를 이용하여 성능 테스트를 수행하고 있다.  – 테스트 환경을 구성하고,  – JMeter로 부하를 발생시켜 정상 처리되는 것을 확인했다.  부하를 조금씩 올려가면서 테스트를 수행했는데,  어느 순간부터 JMeter에서 Socket 관련한 에러가 줄줄이 발생했다.  왜 그럴까?  곰곰이 생각해보니 부하발생기 1대에서 – 1,000 쓰레드로 1MB 데이터를 보낼 때부터 에러가 발생했다.  혹시 네트워크 데이터 처리량이 부족해서 그런

기타 개발

JMeter, java.net.BindException: Address already in use: connect

JMeter를 이용해서 성능테스트를 수행하는 중 에러가 발생했다. (Windows 10, JMeter 5.5) 1 java.net.BindException: Address already in use: connect cs 응? 서버 프로그램 돌릴 때 종종 보던 에러 아닌가? JMeter는 클라이언트인데, 왜 이런 에러가 나올까? BindException에 대해 알아보자. Signals that an error occurred while attempting to bind a socket to a local address and port. Typically, the port is in use,

기타 개발

docker, centos, ubuntu, systemd

CentOS 7을 Docker에서 사용할 때, systemd는 기본 장착이 아니다.  – systemd를 사용하려면 dockerfile에 관련 내용을 넣거나,  – systemd가 포함된 이미지를 받아야 한다.  CentOS + systemd를 사용하는 방법은 아래 두 문서에 나와 있다.  – https://hub.docker.com/_/centos – https://github.com/CentOS/CentOS-Dockerfiles/tree/master/systemd/centos7 며칠을 틈틈이 시도했는데 실패했다.  – 검색해서 방법이 나오는 건 된다는 건데, – 어디 가서 개발 좀 했다고 이야기 하면

기타 개발

MySQL + Docker Container, 새로운 사실을 알기까지 여정

도커 입문 2021년 가을, 사이드 프로젝트를 진행하면서 어떤 DBMS를 쓸 지 고민하다 락이 걸렸다. – 일일이 설치하고 테스트 하는 것도 부담 – 지우는 것도 부담 – 버전이 올라가면 지우고 또 설치해야 하나? 덕분에 도커를 알게되었고, MySQL 도커 컨테이너 덕분에 모든 고민이 해결됐다.  도커에 눈 뜨다 새로운 곳에서 일을 하게 되면서 도커로 이것 저것 해볼 수

기타 개발

MySQL 도커 컨테이너 생성하는 방법 2가지

MySQL을 Docker Container로 띄우면 빈 깡통 MySQL이 하나 생긴다.  여기에 데이터베이스, 사용자, 테이블을 생성하고 데이터를 넣어야 한다. 데이터베이스, 사용자, 테이블, 데이터가 포함된 도커 컨테이너를 만들수도 있다. 1. 데이터를 넣을 쿼리문을 준비한다. (.sh, .sql, .sql.gz)     – 예시) mysqldump  2. MySQL을 Docker Container로 띄운다.  1 $ docker run ––name some–mysql –e MYSQL_ROOT_PASSWORD=my–secret–pw –d mysql:tag cs 3. Docker Container에 /docker-entrypoint-initdb.d 경로를 만들고, 1.에서 준비한

기타 개발

MySQL 대용량 import 주의 binary log

요약하자면 대용량 데이터를 import 할 때는 binary log 보관 기간을 최소화 하자.  MySQL 기본 설정으로 import 하면, 대략 그만큼의 디스크 용량이 필요하기 때문이다.  import 후에는 binary log 보관 기간을 적절히 변경한다.  MySQL 버전이다.  1 2 3 user@dev:~$ mysql ––version mysql  Ver 8.0.32–0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu)) user@dev:~$ Colored by Color Scripter cs 가상서버호스팅 이전 중 문제 발생 가상서버호스팅 변경하고, 서버 이전을 하고 있다.

위로 스크롤