2

画像の生成に gwan を使用しているため、正しいコンテンツ タイプを設定する必要がありますが、G-WAN 3.12.26 は負荷がかかった後、コンテンツ タイプが text/html の独自のヘッダーを追加し、2 つの http ヘッダーを含むページを返します。

これを再現する方法:

gwan パッケージの setheaders.c サーブレットを使用し、gwan を起動してこのページを開くと、次のhttp://localhost/?setheaders.cようになります (正しい応答)。

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 20:37:52 GMT
Last-Modified: Sat, 29 Dec 2012 20:37:52 GMT
Content-type: text/html
Content-Length:    371
Connection: close

<!DOCTYPE HTML><html lang="en"><head><title>Setting response headers</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="imgs/style.css" rel="stylesheet" type="text/css"></head><body style="margin:16px;"><h1>Setting response headers</h1><br>This reply was made with custom HTTP headers, look at the servlet source code.<br></body></html>`

今Apacheベンチを実行します:(ab -n 1000 'http://localhost/?setheaders.c'私のシステムでは1000リクエストで十分でした)。

GWAN を再起動しないで、http://localhost/?setheaders.cもう一度開くと、次のようになります (応答が正しくない、2 つの http ヘッダー):

HTTP/1.1 200 OK
Server: G-WAN
Date: Sat, 29 Dec 2012 20:43:34 GMT
Last-Modified: Fri, 16 Jan 1970 16:53:33 GMT
ETag: "be86ada7-14b40d-16f"
Vary: Accept-Encoding
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Content-Length: 367
Content-Encoding: gzip
Connection: close

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 20:43:34 GMT
Last-Modified: Sat, 29 Dec 2012 20:43:34 GMT
Content-type: text/html
Content-Length:    371
Connection: close

<!DOCTYPE HTML><html lang="en"><head><title>Setting response headers</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="imgs/style.css" rel="stylesheet" type="text/css"></head><body style="margin:16px;"><h1>Setting response headers</h1><br>This reply was made with custom HTTP headers, look at the servlet source code.<br></body></html>

gzip および x-gzip が要求ヘッダーで受け入れ可能なエンコードとして設定されていない場合、GWAN は正しい応答を返します ( Accept-Encoding: gzip, x-gzip)。

この修正だけでサーブレットを解決することは可能ですか? はいの場合、どのように?

4

1 に答える 1

0

MIME typeに示すように設定していますかfractal.c

   // -------------------------------------------------------------------------
   // specify a MIME type so we don't have to build custom HTTP headers
   // -------------------------------------------------------------------------
   char *mime = (char*)get_env(argv, REPLY_MIME_TYPE);
   // note that we setup the FILE EXTENTION, not the MIME type:
   mime[0] = '.'; mime[1] = 'g'; mime[2] = 'i'; mime[3] = 'f'; mime[4] = 0;

そうする場合、自動ヘッダー機能を混乱させる方法はありません。

それ以外に、v3.12 には、ダイレクト syscall と GLIBC ラッパーが原因で、多くの不安定性の問題 (ファイル時間の失敗、pthread の失敗、シグナルの失敗など) がありました。

私たちは (あなたのような多くのレポートのおかげで) これらの問題を 1 つずつ修正しようとするよりも (GLIBC と無意味に戦い、それぞれに独自のバグと特異性を持つ多くの異なるリリースを持つ移動ターゲット)、はるかに安全な道は捨てることであることがわかりました。 GLIBC。

それが、G-WAN v4 が数日後に行うことです。

于 2012-12-30T09:29:34.690 に答える