出産前後の痔にはご注意!

現在Apache、Tomcatをmod_jk2で連携しwebサーバを構築しております。
そこでチューニングについて、色々と調べているのですが、
Apache単体のチューニングサイトは良く見かけるのですが、
Tomcatと連携した場合のチューニング例(質問内容が解決するような)がなかなか見つからず困っております。
以下の問題に参考になるサイト、あるいわアドバイスがあればご教授お願い致します。

■以下環境設定等
※Apache設定
バージョン2.0.59

httpd.conf設定
******************************************
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 250
MaxRequestsPerChild 0
</IfModule>
*******************************************

※Tomcat設定
バージョン5.0.28

server.xml設定
*******************************************
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->

<!-- Note : To use gzip compression you could set the following properties :

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
*******************************************

■疑問点
1.Apache、Tomcatを連携する際の使用ポートは8009となっているが、
Tomcat側の8009設定には情報が載っていなのは正常なのか。
ApacheとTomcatのコネクション設定を最適化したいと思い
いろいろ検証しているのですが、Apacheのhttpd.confの設定を見てる気がしてならないです…。。

2.いろんなサイトを見ているとApacheと連携した際は、
Tomcatの8080ポートを使わない設定にしている所が非常に多いです。
8080ポートを使わないからセキュリティ上消すのは分かるのですが、
何か他にも特別な理由等あるのでしょうか?
例えば、80ポート、8080ポートと両方で受け付けていると動作がおかしくなるや、メモリを余計に食うなど。


以上、長くなりましたが些細な点でもいいのですので、ご教授お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> 1.Apache、Tomcatを連携する際の使用ポートは8009となっているが、


> Tomcat側の8009設定には情報が載っていなのは正常なのか。
> ApacheとTomcatのコネクション設定を最適化したいと思い
> いろいろ検証しているのですが、Apacheのhttpd.confの設定を見てる気
> がしてならないです…。。

<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />

まさしくこの部分だと思いますけど。ちなみに、Apache 側は workers2.properties で設定します (ファイル名はソースコードにハードコードされています)。

> 2.いろんなサイトを見ているとApacheと連携した際は、
> Tomcatの8080ポートを使わない設定にしている所が非常に多いです。
> 8080ポートを使わないからセキュリティ上消すのは分かるのですが、
> 何か他にも特別な理由等あるのでしょうか?
> 例えば、80ポート、8080ポートと両方で受け付けていると動作がおかし
> くなるや、メモリを余計に食うなど。

それはないでしょうが、使わないものは閉じる、これはセキュリティ向上のための鉄則だと思います。それが Well Known Port の 80 版であるならなおさらです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q既存DBのテーブル情報をCREATE文として取得するには

こんにちは。
既存DBのテーブル情報をCREATE文として取得する方法はありますでしょうか?
CREATE文として欲しいのは、他のサーバに開発用として同じDBを構築しようと考えているからです。
よろしくお願いします。

Aベストアンサー

ごめんなさい、うそ書いちゃいました。

実際のコマンド確認したところ、DDL文ファイルに出力させるには、インポートのコマンドであるimpのINDEXFILEオプションを使用します。

で、そのimpの実行に必要なファイルをexpで取得します。

expの方ですが、ROWS=Nで実行すればデータはエクスポートされずに定義のみエクスポートとなります。


>やはり、catexp.sql及びexpを実行するには、運用を止めて使用していない状態の方が良いのでしょうか?

catexp.sql、たいていDB構築時には流してると思いますよ。
1度流せばいいものなので、expが使えなかったら流すことを検討すればいいと思います。

心配でしたらcatexp.sqlが中でどんなSQLを流しているか自分で見てみるのがいいかと。

expは間違って行の内容まで出力させるとテーブルのサイズによっては大変なことになるのでパラメータの十分な確認が必要です。

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?

Q~以外を削除する場合(rmコマンド)

linuxのコマンドで
~以外のファイル、ディレクトリを全て削除したい時は
どのような記述をすれば良いのでしょうか?
シェルスクリプトではなくrmコマンド1つで削除したのいですが…

例: tar以外のファイル・ディレクトリを
   すべて削除したい場合など

どなたかご存知の方がいらっしゃったら
教えてください。よろしくお願い致します。

Aベストアンサー

rm コマンドのみという訳にはいきませんが基本的なコマンドを組み合わせると実現可能と思います。

「名前が tar で終わるもの以外のファイル・ディレクトリを削除する」場合だと

ls | grep -v -E 'tar$' | xargs rm -r

となります。

ファイルの一覧を取得し ( ls )
'tar'で終わるもの以外を抽出し ( grep )
その結果を rm -r の引数に指定して実行 ( xargs )

という流れです。

ファイルを削除するような操作については失敗するとダメージが大きいので、事前にテストして動作を確認すると良いとおもいます。また rm -r -i としてそれぞれのファイルについて、削除の問い合わせをするのも有効です。

QApacheでセッションタイムアウトの設定方法

ApacheでPHPで作ったシステムを動かしています。PHPの画面間のデータの受け渡しはセッションを使って行なっているのですが、
そのセッションが早めにタイムアウトとなってしまうので、
時間を長めに設定したいと思っています。
httpd.confのTimeOutを変更してみたのですが、
これはセッションのタイムアウトとは関係ないようで、
変更しても、動きが変わりませんでした。
httpd.conf内に他にそれらしい項目がないのですが、
セッションのタイムアウトを変更した場合、どこにあるどのファイルを変更すればよいのでしょうか?
よろしくお願いします。

Aベストアンサー

その状況だと、Keepalive の設定だと思います
---以下httpd.confの---
KeepAlive On   <=Onに成っていれば有効
MaxKeepAliveRequests 100 <=リクエスト数 timeoutを長くするならここは少なめに
KeepAliveTimeout 15  <=ここの数値で設定

詳しくは  http://httpd.apache.org/docs/2.0/ja/mod/core.html#keepalive
そのページにも書いてありますが、あまり長くするとサーバーへの負担が過大に成りますのでご注意を

Qtomcatのstdout.logを停止したい。

今回がはじめての質問になります。
投稿カテゴリが適切ではないかもしれません。

Windows2003Server で稼動している tomcat5.0で出力されるstdout.logが、あるエラーの為1日に100MByteほど出力する状況になってしまいました。

暫定対応として、stdout.logの出力を停止したいと考えています。

レジストリの
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat5\Parameters\Log]
の"StdOutput"
の値を空にするとstdout.logは出力されなくなるのですが、メモリリーク等の問題が考えられなくもないので不安です。

なにか設定等でstdout.logの出力を停止する方法はないでしょうか?

ご教示いただけますようよろしくお願いいたします。

Aベストアンサー

このあたりが参考になりそうですよ。
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/config/logger.html

verbosity属性が出力するログのレベルみたいです。

Qttlで戻り値を取得する方法

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
 sendln 'ssh name2@host2'

以下略
----------------------------------------------------------

上記の「戻り値」をどのようにすれば戻り値で判別してくれるでしょうか。
if文の条件式を $?やresultでやりましたが、どのような戻り値でも
必ず$?は0、resultは1で固定でした。

また、sendmsgとif文の間に以下のように試しましたが、失敗しました。
例1:
----------------------------------------------------------
sendln 'echo $?'
recvln

if inputstr = 0 then ←syntax errorになります。
 ○○
elseif inputstr = 1 then
----------------------------------------------------------

例2:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1247390747参照
----------------------------------------------------------
sendln 'echo $?'
recvln
recvln

hensu=inputstr ←Type mismatch.のエラーになる。 直前にstr2intを入れたりしても駄目でした。
ちなみにsendln 'echo $?'を挟まずsendmsgの直後にrecvlnでも駄目です。

if hensu = 0 then
 ○○
elseif hensu = 1 then
----------------------------------------------------------

host1にシェルスクリプトを入れることは出来ません。

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
...続きを読む

Aベストアンサー

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバックの分を受け取ってしまうようです。
他の出力を受信してしまう場合もあります。
確実にやるなら、目印を付けてwaitでそこまで待つ、というのがいい思います

sendln 'echo "=== EXIT STATUS === : $?"'
wait '=== EXIT STATUS === : '
recvln


・シェルスクリプトを入れることはできなくても、複合コマンドを実行することはできるはずです。
sendln '(sendmsg "test" && echo "==== OK ====") || echo "==== NG ===="'
waitlnで待ち→resultで分岐とできます
http://ttssh2.sourceforge.jp/manual/ja/macro/command/waitln.html

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバ...続きを読む


人気Q&Aランキング