shantaram
(shantaram)
1
ホームページへのリクエスト http://10.201.61.8/forum
リクエスト時間が5秒を超えました。

常に「Oops」というエラーが発生します。
リクエストが5秒を超えることに関する制限、あるいは他の制限はありますか?よろしくお願いいたします。
Oops
このディスカッションフォーラムを動作させているソフトウェアで予期せぬ問題が発生しました。ご迷惑をおかけし、申し訳ございません。
エラーの詳細な情報はログに記録され、自動通知が生成されました。確認いたします。
それ以上の対応は不要です。ただし、エラーが継続する場合は、エラーを再現する手順などを含む追加情報を、サイトのフィードバックカテゴリに投稿してご提供ください。
sam
(Sam Saffron)
2
サイトの手前でカスタムプロキシを実行していて、タイムアウトが発生しているようです。
shantaram
(shantaram)
3
はい、外部でカスタム Nginx プロキシを使用しています。
sam
(Sam Saffron)
4
カスタム nginx プロキシ側で設定を変更する必要がありますね。
shantaram
(shantaram)
5
時には、リクエスト時間が5秒を超えない場合、通常通りウェブにアクセスできることがあります。
shantaram
(shantaram)
6
そのため、すべての設定が正しく動作するはずです。
ただし、リクエストが5秒を超えると「Oops」と表示されてしまいます。
5秒を超えるリクエストに対する何らかの制限があるのではないかと疑っています。
shantaram
(shantaram)
7
以下の通り、カスタム Nginx 設定を外部に記述します。
server {
listen 9000;
server_name localhost;
root /opt/nginx/portal;
location ~* ^.+\\.(jpg|jpeg|gif|png|bmp)$ {
access_log off;
expires 30d;
break;
}
location / {
index index.html index.htm;
}
location ^~/forum {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' '*';
proxy_pass http://unix:/opt/oca-forum/shared/ocaforum/nginx.http.sock:;
proxy_redirect off;
}
}
shantaram
(shantaram)
8
以下の app.yml です:
templates:
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/cron.template.yml"
- "templates/web.china.template.yml"
- "templates/web.socketed.template.yml"
params:
db_default_text_search_config: "pg_catalog.english"
db_shared_buffers: "1280MB"
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
UNICORN_WORKERS: 8
DISCOURSE_HOSTNAME: '10.201.61.8:9000'
DOCKER_USE_HOSTNAME: false
DISCOURSE_RELATIVE_URL_ROOT: /forum
DISCOURSE_DEVELOPER_EMAILS: 'jxwoeuxer@gmail.com'
DISCOURSE_SMTP_ADDRESS: gmail.smtp.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: jzwoeuxer@gmail.com
DISCOURSE_SMTP_PASSWORD: "WEweoier2x2w3e"
DISCOURSE_SMTP_ENABLE_START_TLS: false # (オプション、デフォルトは true)
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_NOTIFICATION_EMAIL: jxwoeuxer@gmail.com # (通知を送信するアドレス)
DISCOURSE_DB_HOST: 10.201.61.16
DISCOURSE_DB_PORT: 5432
DISCOURSE_DB_NAME: theforum
DISCOURSE_DB_SOCKET: ''
DISCOURSE_DB_USERNAME: postgres
DISCOURSE_DB_PASSWORD: theforum16
volumes:
- volume:
host: /opt/oca-forum/shared/ocaforum
guest: /shared
- volume:
host: /opt/oca-forum/shared/ocaforum/log/var-log
guest: /var/log
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com.cnpmjs.org/discourse/docker_manager.git
run:
- exec: echo "カスタムコマンドの開始"
- exec:
cd: $home
cmd:
- mkdir -p public/forum
- cd public/forum && ln -s ../uploads && ln -s ../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /forum/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
to: |
location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
rewrite ^/(svg-sprite|letter_avatar|letter_avatar_proxy|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker)/([^/]+):[0-9]+/(.*) /forum/$1/$2/$3 break;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /forum {
rewrite ^/forum/?(.*)$ /$1;
}
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_your_original_ip_header
global: true
- exec: echo "カスタムコマンドの終了"
Falco
(Falco)
11
リバースプロキシを削除し、コンテナが直接 80/443 ポートにバインドするように設定して、問題が解消するか確認してください。
shantaram
(shantaram)
12
ありがとうございます!
しかし、Discourse のポートがもうないため、外部の Nginx を使用せざるを得ません。
shantaram
(shantaram)
13
Discourse コンテナに入り、以下のコマンドを実行しました。
curl http://localhost:3000/forum
すると、同じエラーが表示されます。
---
# # # curl http://localhost:3000/forum
<!DOCTYPE html>
<html>
<head>
<title>Oops - Error 500</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<h1>Oops</h1>
<p>このディスカッションフォーラムを動作させているソフトウェアで予期せぬ問題が発生しました。ご迷惑をおかけして申し訳ございません。</p>
<p>エラーに関する詳細情報はログに記録され、自動的に通知が生成されました。確認いたします。</p>
<p>これ以上の手順は不要です。ただし、エラー状態が解消しない場合は、サイトのフィードバックカテゴリにトピックを投稿し、エラーの再現手順など追加の詳細を提供してください。</p>
</body>
</html>
shantaram
(shantaram)
14
Discourse のオープンソース版を利用しています。
外部の nginx を使用し、URL パスにサブフォルダを割り当てる必要があるのですが。
@Falco
shantaram
(shantaram)
15
DB に何か理由があるかもしれません。
DB の動作が非常に遅いことがわかりました。
db_timeout を 10 に変更しましたが、10 秒後にエラーが発生しました。
DB の速度を上げる必要があるかもしれません。
shantaram
(shantaram)
16
問題を解決しました。5秒の設定はデフォルトのデータベース設定でした。以下の通り設定を変更しました。
DISCOURSE_DB_TIMEOUT: 10000
DISCOURSE_DB_CONNECT_TIMEOUT: 10
さらに、データベースが非常に遅いことが判明しました。そのため、Windows上の古いデータベースに代わり、Linux上の新しいデータベースを使用しています。
ご協力いただきありがとうございます。Discourseは素晴らしい製品です。