グッドデザイン賞を受賞したウォーターサーバー >>

Web設計始めたばかりです。
基本かもしれませんが教えて下さい。
httpであれば80ポート、ftpであれば20ポートを
使って通信していますが
このポートへの接続数と言いますかアクセスできる
最大数でTCP/IPの規格またはOSで決まって
いるのですか。決まっていれば幾つ。
例えば1つのWebサーバに何万という利用者が同時に
アクセスしている状況ってhttpの80ポートを全員が
利用しているのですか。

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

A 回答 (5件)

こんにちは


規格上の制約はありません。
主にServer のスペック(CPU/メモリ)に依存します。
実際の話となると、各ベンダー/SIer のノウハウの部分ですので、
そちらに確認される事をオススメします。

次に、利用するソケットでの制限(?)が考えられます。
以下のURL や”listen backlog”、”TCPソケット listen数”をキーワードに探してみてください。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced. …

また、忘れてはならないのが、Server までの通信経路上のNW 機器の制約です。
特にFirewall やSLB といった機器は、
秒間の最大同時セッション数/新規セッション数などが仕様上決まっています。
ルータのスループット/パフォーマンスなどに注意が必要です。

その他、アプリケーション性能管理について参考になりそうなページを紹介しておきます。
http://www.empirix.co.jp/PlectureVol5/
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。
これを考慮して設計進めます。
大変感謝です。

お礼日時:2005/09/16 23:04
    • good
    • 1

こんばんは^^



WEBについては全然よく分かってませんし、
RFCで決まっているかどうかはわかりませんが、
そこには色々な条件が絡んでくると思います。

サーバー側のソケット数制限(listen)でTCP/IPで言えば1台で最大65536のソケット作成出来ると思いますが、最大数まで繋げるのは非現実的ですし、
また、サーバーのスペックによるメモリーに関する制限も設けないといけないと思います。
DoSアタックにも対応しないといけませんしね。。

WEBサーバーを立ち上げるにあたり、当然アクセス数を視野に入れると思いますが、
将来拡張するために色々考えないといけないと思います。
1台だけでWEBサーバーを構築するということは少ないんじゃないでしょうか?

参考にならないかもしれませんが・・( ´Д`)
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。
これを考慮して設計進めます。
大変感謝です。

お礼日時:2005/09/16 23:03

TCPのコネクション数は高負荷テスト機で100万単位でかけられるようですから、実質無限大ですね。

搭載メモリ消費量に依存すると思います。
WindowsXP等でしたら各エディションに縛りがありますが。
    • good
    • 1
この回答へのお礼

回答ありがとう御座います。
これを考慮して設計進めます。
大変感謝です。

お礼日時:2005/09/16 23:01

規格はわかりませんが、例えばYahoo!Newsで紹介されたサイトは一気に繋がりにくくはなりますが、「接続が許可されません」的なメッセージは見たことがないので、恐らく上限なるものはないのでしょう。



何万というアクセスに対してサービスをするなら、1つのURLに対して、アクセスを分散させ、複数のサーバーで処理すればよいかと思います。

具体的でなくてすみません。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。
これを考慮して設計進めます。
大変感謝です。

お礼日時:2005/09/16 22:59

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QLinux同時接続数

Linuxでapache 2.2、CentOS6.2の場合のデフォルトでの同時接続数はどのくらいなのでしょうか?

Aベストアンサー

おはようございます

apache 2.2のデフォルト同時接続数と言う事なら、256ですね

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QTIME_WAIT となったセッションを早く終了させる方法はありませんか?

webベースのロールプレイングゲームを管理している者です。
昔から、夕方から深夜にかけてなどつながりにくい状況になっておりますが、いままでデータベースの負荷とかいろんな問題を解決して現在にいたっております。最近のつながりにくい原因を調査したところ、接続数がものすごく増えてしまっているのが原因らしいとわかりました。しかし、netstat で見てみると、実際に接続している時間はすぐ終わり、そのあとの TIME_WAIT の状態が長いようなのです。この状態では接続はすでに終わっているはずですが、これを早く終わらせるにはどうしたらいいのでしょうか?

Aベストアンサー

>とやってみたのですが、確かにぜんぜん変化しませんでした。

確かに変化しませんねぇ。TIME_WAITについては。。。
やはり、JFにあるようにあくまでFIN_WAIT_2に絡む設定のようですね。なので#2の参考サイトの内容は微妙ですね。すみません。

ざっとCentOS4.3のkernelソース眺めた感じだと
include/net/tcp.h

#define TCP_TIMEWAIT_LEN (60*HZ)
#define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
となっていて、約60がデフォルトのようです。で他のソースからも二つは使い分けられているようだったので
#define TCP_TIMEWAIT_LEN (15*HZ)
としてkernelリビルドして入れ替えたらTIME_WAITステータスは約15秒で破棄されました。当然標準のnet.ipv4.tcp_fin_timeoutも短くなってましたが。(ちなみにnet.ipv4.tcp_tw_recycleは標準のまま)

ご参考まで。

>とやってみたのですが、確かにぜんぜん変化しませんでした。

確かに変化しませんねぇ。TIME_WAITについては。。。
やはり、JFにあるようにあくまでFIN_WAIT_2に絡む設定のようですね。なので#2の参考サイトの内容は微妙ですね。すみません。

ざっとCentOS4.3のkernelソース眺めた感じだと
include/net/tcp.h

#define TCP_TIMEWAIT_LEN (60*HZ)
#define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
となっていて、約60がデフォルトのようです。で他のソースからも二つは使い分けられているようだったので
#...続きを読む

QwiresharkでパケットモニタするとRetransmissionが多発しているという意味は?

現在、自分で作成したパケット送信クライアントプログラムをテストしており、3秒に1回のタイミングでインターネット上にあるサーバのグローバルipアドレスに対し、TCPパケットを発信させて受信するというテストを行っています。
しかし、3秒に一回データを送っているはずなのに、その間隔10秒とか20秒とか間隔が開いてしまう時があります。

wiresharkというパケットモニタソフトで送信側、受信側共にパケットモニタを行ってみたところ、”Retransmission”が多発しているということがわかりました。(tcp.analysis.retransmissionというフィルタ設定で検索)この現象はある時とない時があります。テストして10日ぐらい経つのですが、このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

わかる方いらっしゃいましたらご教授よろしくお願いいたします。

Aベストアンサー

簡単に言うと「トラフィック過多によるパケットの再送が多発している」です。

噛み砕いて言えば「回線が混雑していて、送信したパケットが、他の誰かが送信したパケットと衝突(コリジョンが発生)してパケットが消えた。なので、もう一度、送り直した」と言う事。

>このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

「お昼休み、終業時間の6時になると、みんな、メールをチェックしたり、個人的にインターネットを閲覧し、トラフィック過多が起き、回線が異常に混雑する」と言う事が起きていると考えられます。

解消するには以下の方法があります。
・「休み時間も、終業時間後も、プライベートでネットを使うな!」と言う「通達」を全社に出す
・社内LANを、トラフィック過多によるコリジョンが起きないよう高速で帯域のあるネットワークカード、LANハブ、ルーターに変える
・受信側と送信側を、社内LANから(電気的、アドレス的に)独立した別のLANにする

要は「混んでる時間帯なので仕方が無い」って事です。

簡単に言うと「トラフィック過多によるパケットの再送が多発している」です。

噛み砕いて言えば「回線が混雑していて、送信したパケットが、他の誰かが送信したパケットと衝突(コリジョンが発生)してパケットが消えた。なので、もう一度、送り直した」と言う事。

>このパケットが確認されるのはお昼の12時頃と夕方の6時頃が多いのですが、このことからどのようなことが起こっていると考えられますか?

「お昼休み、終業時間の6時になると、みんな、メールをチェックしたり、個人的にインターネットを...続きを読む

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Qソケット通信 同じポート番号でn対1はできない?

Windows2000クライアントが複数あり、サーバソケット用APを作成したのですが、1対1では確認できたのですが、
n対1は、手法が変わるのですか?

疑問:
PCとサーバ間でのソケット通信にて、相互に同じポートでなければいけないので、複数のPCからサーバソケット用AP
で決めたポートに繋げに行くことが可能なのですか?

Aベストアンサー

サーバのOSについての記述がないので、unix系とみなして回答します。
APを以下のように修正してください。

accept()したあと、fork()します。

親はaccept()で得たディスクリプタをclose()して再度accept()ループに入ります。

子はbind()で得たディスクリプタをclose()して、あとは1体1の場合と同様に通信を開始し、処理が終了したらexit()します。

fork()によって、接続を待つプロセスと受け付けた接続を処理するプロセスに別れることで、複数の接続を同時に受け入れ可能なサーバAPを作成します。

MTによる方法もありますが、まずはfork()をマスターしてください。

QNTPで同期が始まらない

こんにちは。
度々すみません、NTPの設定をしましたがどうも同期が始まりません。

「ntpdate 130.69.251.23」と手動同期は成功します。
しかしntpデーモンを起動し1時間以上放置しても同期されません。
※外部タイムサーバー参照としてます

ntp.confは下記のとおりです。
---------------------------------------------------
server 133.100.9.2 # clock.nc.fukuoka-u.ac.jp
server 130.69.251.23
driftfile /var/lib/ntp/drift
---------------------------------------------------

でntpq -pの結果は下記となります。

remote refid st t when poll reach delay offset jitter
==============================================================================
133.100.9.2 .INIT. 16 u - 64 0 0.000 0.000 4000.00
130.69.251.23 .GPS. 1 u 27 64 377 8.015 -99970. 17262.6

同期ができれば「remote」列に「*」が表示されると思っています。
何か設定が足りないでしょうか?。
尚、「/vat/log/message」をtailしてますが特にエラーは無さそうです。

よろしくお願いします。

こんにちは。
度々すみません、NTPの設定をしましたがどうも同期が始まりません。

「ntpdate 130.69.251.23」と手動同期は成功します。
しかしntpデーモンを起動し1時間以上放置しても同期されません。
※外部タイムサーバー参照としてます

ntp.confは下記のとおりです。
---------------------------------------------------
server 133.100.9.2 # clock.nc.fukuoka-u.ac.jp
server 130.69.251.23
driftfile /var/lib/ntp/drift
---------------------------------------------------

でntp...続きを読む

Aベストアンサー

#4のqaaqです。

○ntp.conf 関連
server 行に "iburst" を付けておきましょう。
server ntp.nict.jp iburst <--こんな感じになります。

ntp サーバ起動時の時刻調整の収束時間が早くなります。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=ntp.conf&dir=jpman-5.4.0%2Fman&sect=0

○ntpdate での時刻調整
ntpdate -b -u [サーバ名] を複数回実行して、"offset の値が0.1以下"になるまで、強制的に時刻調整して下さい。

○ハードウエアclockの修正
hwclock -w コマンドでハードウエアclockを合わせます。
http://www.linux.or.jp/JM/html/util-linux/man8/hwclock.8.html

○ntpdの動作
ntpによる時刻調整は、調整幅が通常128mSと小さいので、1時間は様子をましょう。
2時間程度経過しても、時刻修正の兆候が見られない場合ハードウェアの不良も考えられます。

時刻調整の兆候としては、
・logファイルに 一時間毎に調整したメッセージが書かれる。
Jan 7 21:57:40 ntpd[91145]: offset 0.000994 sec freq -190.802 ppm error 0.000076 poll 8
・ntpq -p の出力の最初の桁に"*,+"が付く。また、reach が377になる。
% ntpq -np
remote refid st t when poll reach delay offset jitter
+192.168.0.102 GPS_NMEA(0) 2 u 3 32 377 0.926 -0.330 0.023
*192.168.0.192 GPS_NMEA(1) 2 u 10 32 377 0.747 -0.336 0.023
192.168.0.9 PPS(1) 2 u 3 32 377 0.757 6.559 0.161


○その他
・PC起動時には、システムクロックを計測してその後の動作の基準にしていますが、
CMOSバッテリ不足やハードウェアに何らかの異常があるととんでもない時刻を示すことがあります。(要修理です)
・BIOSの時計も起動時の初期時刻として使われてしまうので、ある程度合わせておいた方がいいです。

#4のqaaqです。

○ntp.conf 関連
server 行に "iburst" を付けておきましょう。
server ntp.nict.jp iburst <--こんな感じになります。

ntp サーバ起動時の時刻調整の収束時間が早くなります。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=ntp.conf&dir=jpman-5.4.0%2Fman&sect=0

○ntpdate での時刻調整
ntpdate -b -u [サーバ名] を複数回実行して、"offset の値が0.1以下"になるまで、強制的に時刻調整して下さい。

○ハードウエアclockの修正
hwclock -w コマンドでハ...続きを読む

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

QNTP の TCPポートは?

NTPは123/UDPでようは足りると思うのですが、
WELL KNOWN PORTとかいろいろな資料に「123/TCP」ポートが割当たってます。
ntpd,ntpdate等でNTPを使う場合、実際には123/TCPは使われているのでしょうか?

Aベストアンサー

RFC1305では「ntpには123/udpを割り当てる」となっていますが、RFC1700では「123 ntp」となっており、「123/udp」と明示されているわけではありません。
よって、「123/tcp ntp」が間違っている(または使えない)という明確な根拠にはなりません。

「現状では『123/tcp ntp』を実装するための定義が存在しない」程度に考えた方が良いと思います。

ただ、将来的にRFC2030のSNTPが(IPv6対応などの点で)主流になる可能性があるので、「123/tcp ntp」は定義されない可能性もあります。

Qシェルスクリプトでファイル内の数値文字列を数値として扱うには

失礼します。
シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか?

str:ファイル内のテキスト(数値文字列)

res=$(( $str + 1 ))

・エラー
")syntax error: invalid arithmetic operator (error token is "


よろしくお願いします。

Aベストアンサー

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000

exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをe...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング