문제 상황
이전에 올렸던 webp 확장자 변환 코드
https://2junbeom.tistory.com/162
[개발일지] webp 확장자를 통한 이미지 제공 최적화 작업
공식 홈페이지 개발 중 프론트엔드에서 이미지를 띄우는 데 시간이 너무 오래 걸린다는 문제점을 확인했다. 이미지의 해상도가 너무 높아, 이미지의 크기가 큰 것이 문제였다.이렇게 큰 크기의
2junbeom.tistory.com
로컬에서는 잘 돌아 갔는데 서버에서는 에러가 발생하는 문제가 발견되었다
로그 탐색
우선 로그를 살펴봤지만,
WARN c.t.t.g.e.GlobalExceptionHandler - webp 확장자로 이미지 변환에 실패했습니다.
내가 작성한 기본 에러 메세지만 글로벌 핸들러에 잡히고 추가적인 로그는 발견하지 못했다.
좀 더 자세한 로그를 살펴보기 위해 로그 코드를 추가해 주었다.
log.error("이미지 변환 에러 메세지: {}", e.getMessage(), e);
다시 한 번 로그를 살펴보자
java.io.IOException: [/tmp/cwebp15174289431478345445binary:
/lib64/libm.so.6: version `GLIBC_2.29' not found
(required by /tmp/cwebp15174289431478345445binary)]
GLIBC_2.29 not found 라는 에러 메시지가 보인다!
해결의 실마리가 잡혀가는 순간이군,
그렇다면 GLIBC가 뭔지 알아보자
GLIBC란?
- GLIBC란 리눅스 운영체제의 기본적인 라이브러리로, 커널과 프로세스 사이의 인터페이스라고 할 수 있다.
- printf(), malloc(), fork() 같은 함수를 생각하면 편하다.
- POSIX 표준을 준수하기 때문에 POSIX 호환 시스템에서 대부분의 응용 프로그램이 동일한 API를 사용할 수 있도록 지원한다.
- 리눅스 시스템에서 거의 모든 프로그램과 서비스의 기반이 되는 필수 라이브러리며
ls, cp, mkidr, grep 등등 모든 기본적인 명령어가 GLIBC에 의존한다고 보면 된다.
문제 해결
간단하게 GLIBC가 뭔지 알아봤다.
나는 현재 아마존 리눅스 2023 버전을 사용하고 있다. (프리티어기 때문)
서버에 접속해서 GLIBC 버전을 살펴보자
[ec2-user@ip-@@@@@@@@@@@@ deploy]$ ldd --version
ldd (GNU libc) 2.34
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
2.34 버전이로군,,,,
버전 차이가 많이나서 GLIBC 2.29가 필요한 webp 확장자 변환 라이브러리와 호환이 안 되는 모양이다.
해결 방법
- GLIBC 버전을 2.29로 다운그레이드
[위에서 간단하게 살펴봤든 GLIBC는 운영체제 전반적으로 사용하는 아주 중요한 라이브러리인 만큼 버전을 다운 그레이드 하면
충돌이 발생할 확률이 굉장히 높다] - 기각! - 운영체제 버전을 centos, ubuntu 등으로 변경
[ 도커에서 운영체제만 바꿔가며 적합한 운영체제를 찾는 시간 소모 + 현재 작성된 모든 아마존 리눅스 스크립트를 다시 작성해야하는 공수 필요] - 고려 - 현재 사용중인 scrimage 라이브러리를 GLIBC 2.34와 호환 가능한 버전으로 변경
[가장 공수가 적으며 효율적인 방식, 그러나 호환 가능한 버전이 없다면 2 선택지로 가야함 ㅠ]
위의 흐름에 따라 3번의 선택지를 찾아봤다.
scrimage 공식 문서 탐색
- 공식 문서를 찾아보았지만 어떤 버전이 어느 GLIBC와 호환되는지는 나와있지 않았다.
- 내가 사용하는 아마존 리눅스 2023은 2023년 6월에 출시되었다.
2023.06 이후에 나온 가장 최신 버전 GLIBC를 선택해서 다시 재배포를 시도,,!
성공 ~~

문제 해결 ~~~~
'☃️❄️개발일지, 트러블슈팅❄️☃️' 카테고리의 다른 글
| [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 2 (AWS SES로의 마이그레이션, 적절한 스레드 개수와 청크 사이즈 계산, 쿼리 최적화, 스레드 동적 생성) (1) | 2025.05.28 |
|---|---|
| [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 1 (멀티 스레딩 동시성 문제) (0) | 2025.05.28 |
| [개발일지] Fetch join을 통한 N+1 문제 해결 (0) | 2025.03.18 |
| [개발일지] 시스템 아키텍처 설계 (0) | 2025.01.21 |
| [개발일지] Auto Scaling Group 적용과 무중단 배포(Rolling Update) 및 CI/CD 파이프라인 설정 (0) | 2025.01.14 |