측정으로 확인한 낭비: YoutubeMusic.getSearchUrl 적중률이 6/10(평균 548ms)이라, 빗나가는 40% 에서는 YTM 을 끝까지 기다린 뒤 다시 ytsearch(~0.5초)를 도는 순차 대기가 통째로 버려지고 있었다. 변경: resolveQuery 기본 경로에서 ytsearch 폴백 검색을 먼저 띄워두고 YTM 결과를 기다린다. - YTM 적중 -> 폴백 결과는 버리고 기존과 동일하게 동작(Lavalink 검색 1회가 헛돌 뿐) - YTM 빗나감 -> 이미 진행 중인 폴백 결과를 그대로 사용(추가 대기 0) - 버려지는 폴백 promise 는 catch 를 달아 unhandledRejection 방지 - " Topic" 중복 부가 방지 조건 추가 실측 A/B(YTM 이 빗나가는 3곡, 검색+해석+리졸브 구간): 기존 1500 / 1688 / 1391ms -> 신규 1224 / 1180 / 1399ms 재생은 3곡 모두 성공, 관찰 중 멈춤 0. 남은 병목: 음성접속 핸드셰이크(0.5~1.3초)는 디스코드 왕복이라 단축 여지가 거의 없다.
22 lines
579 B
YAML
22 lines
579 B
YAML
services:
|
|
music-exp:
|
|
build: ./bot
|
|
container_name: music-exp
|
|
restart: "no"
|
|
network_mode: host
|
|
env_file:
|
|
- ./bot/.env
|
|
environment:
|
|
- REDIS=false
|
|
- LAVALINK_HOST=192.168.10.6
|
|
- LAVALINK_PORT=2333
|
|
- SELFTEST_GUILD_ID=1352269198297923648
|
|
- SELFTEST_VOICE_CHANNEL_ID=1352269198914621465
|
|
- SELFTEST_TEXT_CHANNEL_ID=1421342055774289980
|
|
- SELFTEST_QUERY=aespa Supernova
|
|
- SELFTEST_WATCH_SEC=15
|
|
- YTRESOLVER_ENABLED=true
|
|
- YTRESOLVER_URL=http://192.168.10.5:8779
|
|
volumes:
|
|
- ./testdb:/db
|