pfaffman
(Jay Pfaffman)
7월 24, 2016, 3:50오후
1
I have a client for whom embedded youtube videos are missing. They appear in composer’s preview, but when the messages are saved, they disappear. They are working fine in try.discourse.org . I tried whitelisting youtu.be and changing the URL to a youtube.com url too. Neither solved the problem.
The site is running v1.6.0.beta11 +141
Have you tried reaching YouTube from your client’s server?
pfaffman
(Jay Pfaffman)
7월 25, 2016, 6:27오후
3
It seems that the problem was that recent Discourse updates have caused my DOI resolver plugin to muck things up. (I disabled a couple other things too, but it was definitely some plugin. . . )
포스트를 다시 베이킹할 때 youtube.com에서 429 Too Many Requests 오류가 발생하는 문제가 있는 분이 계신가요?
[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 5237
저도 같은 문제를 겪었습니다. 일시적인 IP 차단(1시간인 것 같습니다)이며, 해당 시간 동안 재구축된 게시물의 모든 YouTube 원박스가 실패합니다.
재구축 시 YouTube에 대한 시간당 요청 횟수가 x를 초과하지 않도록 방지하는 메커니즘을 구현해야 하지 않을까요?
Iceman
(Iceman)
5월 23, 2020, 6:57오후
6
최근 Discourse 설치에 대해 일련의 변경 사항과 업그레이드를 진행한 후, 두 가지 문제가 남아 있습니다. 하나는 데이터 컨테이너를 다시 빌드할 수 없는 것 이며, 이 부분은 해결 방법을 찾고 있습니다. 다른 하나는 YouTube URL을 제외한 모든 원박스가 정상 작동하는 것입니다.
서버와 컨테이너 내부에서 YouTube로 CURL 요청을 보낼 수 있는데, 이것이 일시적인 IP 차단 때문임을 어떻게 확인할 수 있을까요?
수정 : 재빌드(App)나 리베이킹(Rebake)이 이 문제에 영향을 주지 않는다는 것을 확인했습니다.
수정 2 : 검색을 통해 @jomaxro 님이 여기 에서 CloudFlare와 같은 서비스가 원박스에 영향을 줄 수 있다고 언급한 것을 보았습니다… CDN이 원박스 중 하나에만 영향을 줄 수 있을까요? 개발 모드(Development Mode)로 전환해 보았지만 변화가 없었습니다.
수정 3 : 모든 플러그인을 제거해 보았습니다. 변화가 없었습니다. (또한, 프로세스들이 서로를 차단하는 것 같아 리베이킹도 수행할 수 없습니다.)
수정 4 : @Overgrow 님의 명령어를 시도해 보았고, 네, 확실히 문제가 있습니다 .
[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 72674
리베이킹 명령어를 실행하려고 애쓰고 있는데, 컨테이너가 다음 오류를 반환하고 있습니다:
PG::UnableToSend: no connection to the server
PG::ConnectionBad: PQconsumeInput() SSL SYSCALL error: EOF detected
무언가를 중지해야 하나요?
neounix
(Dark Matter)
5월 25, 2020, 2:42오후
8
한 가지 접근 방식은 패턴 매칭을 사용하여 단순히 다시 구운 후 지연 시간을 설정하는 것입니다.
Iceman
(Iceman)
5월 25, 2020, 3:12오후
9
이런 식으로:
rake posts:rebake_match["%youtube%",regex,10]
?
제 주요 문제는 이 명령어를 실행할 수 없다는 겁니다
riking
(Kane York)
5월 25, 2020, 5:13오후
10
이것으로 점진적으로 재번역(rebake)할 수 있을지도 모릅니다: Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)
Iceman
(Iceman)
5월 25, 2020, 5:20오후
11
우선 @riking 님, 시간을 내어 도와주셔서 정말 감사합니다.
해당 명령어를 실행해 보았는데, 누락된 게시글 수라고 추정되는 22462라는 숫자가 출력되었습니다. 명령어의 마지막 부분을 기준으로 볼 때, 백그라운드에서 실행되고 있다고 가정해도 될까요?
riking
(Kane York)
5월 25, 2020, 5:25오후
12
네, 15분마다 실행되는 작업이 있어서 SiteSetting.rebake_old_posts_count에 해당하는 게시물을 다시 처리합니다.
Iceman
(Iceman)
5월 25, 2020, 8:18오후
13
한 가지 질문이 있는데, 시간이 아무리 지나도 숫자가 줄어들지 않습니다. 해당 작업을 추적하거나 강제로 실행하는 방법이 있을까요?
riking
(Kane York)
5월 25, 2020, 8:19오후
14
음, 내가 실수를 한 것일 수도 있겠다 이 쿼리의 결과는 뭐야? Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count
Iceman
(Iceman)
5월 25, 2020, 8:23오후
15
현재 상태:
기존 명령어:
[2] pry(main)> Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)
=> 23257
새로운 명령어:
[1] pry(main)> Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count
=> 49458
수정: 시간이 좀 지나 확인해 본 결과, 두 번째 값은 일정하게 유지되는(같은 값) 반면, 첫 번째 값은 계속 증가하고 있습니다.
neounix
(Dark Matter)
5월 26, 2020, 4:29오전
16
Iceman:
이런 식으로:
rake posts:rebake_match["%youtube%",regex,10]
?
제 주요 문제는 이 명령어를 실행할 수 없다는 것입니다
게시글의 문자열을 일치시키는 데 정규식(regex)은 필수적이지 않습니다. 간단한 문자열 검색으로 youtube(예를 들어)를 충분히 잘 일치시킬 수 있습니다. 이 예시에서는 youtube라는 문자열이 포함된 모든 게시글이 재구축(rebake)되며, 100초마다 하나씩 처리됩니다(매우 느립니다…)
약 100초가 지났습니다:
이 작업을 계속 실행해 보겠습니다. 76,200초(±) 정도 후에 이 rake 작업이 완료될 것 같습니다
이 예시를 10초 지연으로 설정했어야 했네요
Iceman
(Iceman)
5월 26, 2020, 9:53오전
17
감사합니다 @neounix
시해 보았지만, 안타깝게도 성공하지 못했습니다.
네트워크와 관련된 문제가 있는 건 아닌지 의심이 시작됩니다.
neounix
(Dark Matter)
5월 26, 2020, 10:00오전
18
@iceman 님, 죄송합니다.
조금 기술적인 성격이 강한 사람이라 "성공하지 못했습니다"라는 표현이 정확히 어떤 의미인지 이해가 안 됩니다 (기술 정보가 부족해서요)
rake 명령을 실행했을 때 rails 오류가 발생했다는 말씀이신가요?
그렇다면 rails 오류 전체를 게시해 주시겠습니까?
아니면, rails 태스크가 정상적으로 실행되었나요? 그렇다면 rake 태스크에 따라 몇 개의 게시물이 다시 처리(rebake)되었나요?
감사합니다.
예를 들어, 제 작은 샘플 재처리 태스크(매우 느리며 100초 지연)가 이 토픽을 위해 몇 시간째 실행 중입니다:
현재 전체 762개 중 209개까지 진행되었습니다…
님의 재처리 태스크 진행 상황은 어떻게 되나요?
Iceman
(Iceman)
5월 26, 2020, 10:44오전
19
부족한 정보로 혼란을 드려 죄송합니다!
제가 말한 것은 작은 샘플로 실행한 후 다시 실행해 보았지만 숫자가 변하지 않았다는 뜻입니다.
즉, 명령어를 실행했을 때 게시글이 76,000개였는데, 200개를 처리(bake)한 후 멈추고 다시 실행하니 새로운 숫자가 76,200개였다는 겁니다. (네, 아마도 사용자 400명이 YouTube 링크가 포함된 게시글을 추가했을 수도 있겠지만… 저도 모르겠네요.)
지금은 어떻게 될지 보기 위해 다시 실행 중이지만 며칠은 걸릴 것 같습니다 (76,500회 실행…)
다른 분들은 이런 문제가 없는 것 같으니 제 변수들을 생각해 보고 있는데, 기본적으로 다음과 같습니다:
기기를 변경했습니다. (그래서 YouTube의 속도 제한(rate limiting) 때문일 수도 있나요?)
새 설치 환경에 Discourse 백업을 복원했습니다. (이건 관련이 없어야 하지만, 이 시점에서는 움직이는 모든 것에 베팅하는 중입니다.)
두 개의 컨테이너를 설치했습니다. (데이터 재구성 관련 문제가 있었던 것 같았지만 @Falco 님의 이 정보 덕분에 이제 그것이 “정상” 상태라는 것을 알게 되었습니다.)
여기 있는 CDN 튜토리얼을 따라 CloudFlare를 상단에 설정했습니다.
neounix
(Dark Matter)
5월 26, 2020, 10:53오전
20
Iceman:
ie: 명령어를 실행했는데 게시글이 76,000개였어요. 200개를 처리(bake)한 후 멈추고, 다시 실행했는데 새 숫자는 76,200이었어요 (네, 아마도 내 사용자들 중 400명이 유튜브 링크가 포함된 게시글을 추가했을 수도 있겠지만… 하지만… 잘 모르겠어요).
두꺼운 머리통 때문에 죄송합니다 이 rake 태스크를 실행하고 있다는 뜻인가요?
rake posts:rebake_match['youtube',string,10]
타입하는 내용과 보이는 내용을 정확히 게시하는 것이 중요합니다.
정확한 rake 태스크와 실행하는 매개변수는 무엇인가요?
해당 rake 태스크를 실행할 때, 태스크가 rebake를 시작할 때 출력되는 첫 몇 줄은 무엇인가요?
상세 정보, 스크린샷, 커맨드 라인에서 복사한 내용 등을 게시해 주세요.
Iceman
(Iceman)
5월 26, 2020, 11:18오전
21
죄송합니다 @neounix , 말씀이 100% 맞습니다.
다시 말씀드리겠습니다:
저는 이 명령어를 실행했습니다:
root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string]
76597 / 76594 (100.0%)-
76597 posts done!
그리고 나서 "아, 타이머를 추가해야 하는데, 그렇지 않으면 'Rate Limit Theory’를 테스트할 수 없잖아"라고 생각해서, 당신이 게시한 것을 시도해 보았습니다:
root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
216 / 76594 (0.2%)-
그리고 잠시 멈추고 상황이 변하고 있는지 확인하러 갔습니다. 아마도 아무것도 변하지 않은 것 같아서, "좋아, 다시 실행해서 어떻게 되는지 보자"라고 생각했습니다:
root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
116 / 76598 (0.2%)-
지금 이 명령어가 실행 중입니다. 제 주장은 다른 rebake 작업으로 인해 전체 게시물 수가 줄지 않았다는 것이었습니다. (이 논리에 제가 틀렸을 수도 있고, 실제로 틀렸을 수도 있습니다).