<-
Apache > HTTP Server > Documentation > Version 2.4 > Miscellaneous Documentation

Hġ ɚ

݋b _ _ Ɯ”. ٿ ~@ ݋ O[.

Hġ 2.0@ ɰ ɼ ] ™nU ~ ݋Lƴ. ġr U@ [ ʾ Hġ 2.0@ @ @ @ .

Hġ 1.3 ݋ 2.0 L@ Q Ȯ强(scalability)@ Ʊ @ ȭ ߴ. ⺻@ڷ κ ȭ @@ ȝ~Ѵ. ׵\ HϳC Ȥ@ C r ɿ ū @ R ] . ݋b Hġ 2.0 @ [ ݋L ڰ r ] b ӛ@ Ѵ. r ӛ@ ݋L [ ü @ ~[nU [b ^R, ӛ@ әn @ JeѴ.

Support Apache!

O

top

[ ü ݋

݋L ɿ ū @ ־b ͻ@ ޸𸮴. z@ ] C@ ȝ~ڰ "О ٽO" e[ o[ øV얿 ݋Lb z@ [R ȵȴ. R ȝ~ھb r[O ٳC Ӹ[ θ[ Ѵ. MaxClients C [ ݋L z@ rn @ ڃe@ ʙnU ؾ Ѵ. Ҏ^@ Z[: top @ n信݋ μz U@ O Hġ μz ] ޸ ȝ~@ ˾Ƴ, ü ȝ~ ޸𸮿݋ ٸ μz ȝ~ @ @݋ .

Mb [: О CPU, О h̝ī, О zr, ݋ "О "@ @ ݋ rؾ Ѵ.

üb ˾݋ ϓƴ. ׵\ ^ڷ Ϟ~[ٽO Ǹ  ħ :

top

C r ݋

HostnameLookups DNS O

Hġ 1.3 HostnameLookups ⺻@@ Onƿ. ]@ ġ DNS ˵ [Ƿ ] e. Hġ 1.3݋ r ⺻@ Off Ǿ. αH ּҸ xzhڷ ȯ[R \ αQ α׷ [, Hġ ` logresolve α׷@ ȝ~[.

αQ E ݋L ɿ @ ġǷ ȝ~[b ݋L Ƈ ٸ ǻͿ݋ αH@ Q[ ٶ.

Allow from domainƳ Deny from domain C ȝ~ѴٔR (, IP ּҰ Ƈ xzhƳ nθ@ ȝ~ѴٔR) Ή| ߺ-_ DNS ˵@ (_˵@ Ƿ Ǿb Ȯθ[ ٳC ˵) ؾ Ѵ. ׵\Ƿ @ Ʊ Ʒ Cb ɸ[R Ɠ_ IP ּҸ ȝ~Ѵ.

<Location /server-status> ӛ ڷ C ~ ] @ [. ǿ ¾b ] DNS ȸ Ѵ. ٞ@ .html .cgi Hϸ DNS ˵@ [b :

HostnameLookups off
<Files ~ "\.(html|cgi)$">
HostnameLookups on
</Files>

׵\ CGI݋ DNS ʿ ]ƶR, ʿ Ưr CGI݋ gethostbyname x@ [nU Oغ ] .

FollowSymLinks SymLinksIfOwnerMatch

URL ݋ Options FollowSymLinks ȝ~[ʽO Options SymLinksIfOwnerMatch ȝ~[R Hġb Ur ȝ[ Czx@ ؾ Ѵ. Hϸ κи 偾 x@ Ѵ. 齁, r ٞ O:

DocumentRoot /www/htdocs
<Directory />
Options SymLinksIfOwnerMatch
</Directory>

/index.html URI ] ٽO r[. ׵\R Hġb /www, /www/htdocs, /www/htdocs/index.html lstat(2) xѴ. lstats ij̸[ ʱV얿 ] 齁 V @ E@ Ѵ. Ur ȝ ѴٔR ٞ ] :

DocumentRoot /www/htdocs
<Directory />
Options FollowSymLinks
</Directory>

<Directory /www/htdocs>
Options -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>

DocumentRoot ξb ȝ[ ʾb. DocumentRoot ^ b η Alias RewriteRule@ ȝ~ 쿡n ӛ ʿ[. Ur @ O[ ʽO O @ ڷR, FollowSymLinks r[O, SymLinksIfOwnerMatchb ȵȴ.

AllowOverride

URL ݋ overrides A~ѴٔR ( .htaccess H) Hġb Hϸ κи .htaccess P CnѴ. 齁,

DocumentRoot /www/htdocs
<Directory />
AllowOverride all
</Directory>

/index.html URI ] ٽO r[. Hġb /.htaccess, /www/.htaccess, /www/htdocs/.htaccess PO CnѴ. ذå@ Options FollowSymLinks 񔇸[. O @ ڷR HϳCzۿ ݋ H AllowOverride None@ ȝ~Ѵ.

~

ɸ[O ɚ󿡙n U ٔR ~@ b. Ɖ|@ ɚv[ ۴. ݋L ] . ٞ ϵī带 ȝ~[b _:

DirectoryIndex index

U@ ȝ~Ѵ:

DirectoryIndex index.cgi index.pl index.shtml index.html

@ տ .

, 丮݋ Hϵ@ ãb MultiViews پb, Hϸ ЙڔR ʿ r @ ] b type-map H@ b ͓ @ U[.

ȝh ~ ʿ[ٔR @ Options MultiViews C ȝ~[⺸ type-map H@ O[. Ҏ^ ڼ type-map H@ b Ҏ^@ ~ ݋ O[.

޸𸮴[ (memory-mapping)

齁, server-side-include Q[b Hġ 2.0 r H@ @V ü mmap(2) @ ѴٔR H@ ޸𸮴[Ѵ.

\ E݋ ޸𸮴[@ @ Ѵ. ׵\ ޸𸮴[ ݋L @ hO U Ȟr@ ġb 찡 :

ǿ ش[R r[b H@ ޸𸮴[[ ʙnU EnableMMAP off ȝ~ؾ Ѵ. (: Cb 丮 ] .)

Sendfile

Hġb ü sendfile(2)@ [R Ŀ sendfile@ ȝ~[ -- 齁, r H@ ݋zV -- r H@ @ ] .

\ E݋ sendfile@ ȝ~[R read send ʿ䰡 ^݋ . ׵\ sendfile@ ȝ~[R ݋L Ȟr@ ġԵǾb 찡 :

ǿ ش[R H@ sendfile r[ ʙnU EnableSendfile off ȝ~ؾ Ѵ. (: Cb 丮 ] .)

μz e

Hġ 1.3 b MinSpareServers, MaxSpareServers, StartServers r ġr ū @ ̐. Ư Hġb E@ ݋z[ ڃe] ٴٸ VM "n" Ⱓ ʿߴ. Q StartServers ڃe@ , MinSpareServers r@M ʴ ڃe@ [ . E݋ StartServers ⺻@ 5 ݋L Ŭƾh 100 C Ӹ[R θ[ Q[⿡ ڃe@ M 95ʰ ɷȴ. C۸[ ʾb ݋L݋b ۸[, 10а [b ġr b ſ ڰ ´.

ʴ Ѱ Ģ@ ڃe@ ؛ C۸[R݋ ݋L ʙڷO rߴ. ǻͰ ڃe@ C۸[ ٻڔR ]@ ݋z ] ^. ׵\ Ģ Hġ ü} ɿ @ ֽ [. Hġ 1.3݋ ʴ Ѱ Ģ@ ȭǾ. ȵb ڃe Ѱ O, 1 {O, ΰ O, 1 {O, װ O, Ʒ eڷ ʴ ڃe@ 32 VM ] Ѵ. ڃe] MinSpareServers r ٴٸR ߸ZѴ.

^[әn ݋ MinSpareServers, MaxSpareServers, StartServers r ʿ䰡 ^. ʿ ڃe@ 4 ƻ e[R ErrorLog UѴ. Ʒ 얓 ƔR r@ [ ٶ. mod_status n ͓ƴ.

μz e L[ MaxRequestsPerChild r@ μz vSѴ. ⺻@@ ڃe Q ]] ѓ ^پb 0ƴ. r 30 ſ ۻ@ @ڷ rǘٔR, @@ 瞢 w ʿ䰡 . SunOS E Solaris L@ ȝ~ѴٔR, ޸ϞV얿 @@ 10000 rn r[.

Ϟ(keep-alive) ȝ~ѴٔR ڃe@ ƹ P ῡ݋ ߰ ]@ ٸ ƹ͙n [ʱV얿 ٻڴ. KeepAliveTimeout ⺻@ 15 ʾb Ʒ @ ȭѴ. h̝ _ ݋L ڿ ] ° rѴ. Ϟ κ ȝV얿 쿡n @@ 60 ƻڷ ø .

top

HϳC r ݋

MPM

Hġ 2.xb Q (MPMs)ƶb ü ] b ȭ đ@ Ѵ. Hġ HV MPM@ ؾ Ѵ. beos, mpm_netware, mpmt_os2, mpm_winnt Ưr E݋ ȝ~ ] b MPMn . ^ Ϟ[z Czۻ@ \ MPM ߿ [ ] . ݋L әn Ȯ强(scalability)@ MPM@ r ޷ȴ:

MPM ٸ MPM ڼ rb MPM ݋ O[ ٶ.

޸ ȝ~ ɿ݋ ߿ ΓƱV얿 ȝ~[ ʾb @ غ. @ DSO HߴٔR Z ⿡ LoadModule C ּQ[R ȴ. E݋ @ Ÿ[O [ ȝh ^ƙn rڷ ۸[b 캼 ] .

^ Hġ HϿ rڷ rǘٔR [ ʾb @ Ÿ[ Hġ Hؾ Ѵ.

݋ 翬 @ ȝ~[O ȝ~[ 얓 e׃. r@ ȝh ٸ. ׵\ Ƹn mod_mime, mod_dir, mod_log_config @ ȝ~ ͓ƴ. ȝh αHϓ ʿ^ٔR mod_log_configb ^n ȴ. ׵\ õ[ ʾb.

Atomic w

mod_cache @ T worker MPM@ APR atomic API ȝ~Ѵ. APIb 淮 o ȭ atomic w@ Ѵ.

⺻ڷ APR@ ü/CPU E݋ ȿ Ҏ^@ ȝ~[ w@ Ѵ. 齁, \ _ CPUb [ atomic compare-and-swap (CAS) @ [b w . ׵\ E݋ APR@ Ʒ w ^b E CPU xȯ@ mutex^ @ ⺻ڷ ȝ~Ѵ. Ʒ E݋ Hġ HV Hġ _ CPU݋ ȹƶR, Hġ 伺V --enable-nonportable-atomics ӛ@ ȝ~[ atomic @ ] :

./buildconf
./configure --with-mpm=worker --enable-nonportable-atomics=yes

--enable-nonportable-atomics ӛ@ ٞ @ E :

mod_status ExtendedStatus On

Hġ HV mod_status `[O V ExtendedStatus On@ r[R Hġb ]@ @V gettimeofday(2)(Ȥ@ ü times(2)) x[O (1.3 b) time(2)n ߰ \ xѴ. O݋ ۳C ʿ[ V얓ƴ. @ ڷR (⺻@) ExtendedStatus off rѴ.

accept ȭ - \

:

E ݋b Hġ ݋L 2.0 L݋ ~@ O ʴ. n Ϟȿ r , ݋ ȝ~[ ٶ.

Ϟ[z API Z@ Ѵ. ݋L \ h Ȥ@ \ ּҸ ٸ \ Listen@ ȝ~ѴٽO r[. @ ȝ[ Hġb select(2) ȝ~Ѵ. select(2)b Ͽ ٸO b ^b Ȥ@ Ѱ b ˷ش. Hġb \ ڃe O, {O b ڃe@ C ؛ο @ ȝѴ. E @ ٞ 񔇸[ ( b ȵ忡݋ ʾҴ. Z [ ~n .):

for (;;) {
for (;;) {
fd_set accept_fds;

FD_ZERO (&accept_fds);
for (i = first_socket; i <= last_socket; ++i) {
FD_SET (i, &accept_fds);
}
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
if (rc < 1) continue;
new_connection = -1;
for (i = first_socket; i <= last_socket; ++i) {
if (FD_ISSET (i, &accept_fds)) {
new_connection = accept (i, NULL, NULL);
if (new_connection != -1) break;
}
}
if (new_connection != -1) break;
}
process the new_connection;
}

׵\ Zb b U O(starvation) . \ ڃe C ^@ [R, ]@ ٸ select݋ . V Ͽ ] [n 齁R ڃe (b ڃe ]b ü tƹֿ ٸ). Ƶ@ @ accept[ CnѴ. ׵\ (n Ḹ ߓƶR) ڃe [O, Mb accept݋ . ׵\R ڃe@ ]@ ݋z[nU ݋, ϙڷ ؛ο ] О 齁݋ ڃe@ VM rؘ. Ʒ O b PR#467 Q OǾ. ΰ ذå .

Ѱb @ [ ʙnU (non-blocking) b Ҏ^ƴ. ڃe accept ؙn ʽO, C ] . ׵\ CPU C@ Ѵ. select݋ {b ڃe 10 O, ؛ Ѱ 齁ԴٽO r[. ׵\R ڃe 9b ݋ @ accept[ Cn[O и[R ƹ ϙn [ ʽO ٳC select ^Ѵ. ٳC select ƿ VM ڃen ٸ Ͽ 齁 ]@ ݋z[ ʾb. (μ݋ ǻͿ݋) {b ڃe ]ŭ CPU ] b 찡 ”R ذå@ ƺ ʾb.

ٸ Ҏ^@ Hġ ȝ~[b Ҏ^ڷ ^얿 ڃe@ 鿩. ^얻@ ٞ (mƸ Kߞ):

for (;;) {
accept_mutex_on ();
for (;;) {
fd_set accept_fds;

FD_ZERO (&accept_fds);
for (i = first_socket; i <= last_socket; ++i) {
FD_SET (i, &accept_fds);
}
rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
if (rc < 1) continue;
new_connection = -1;
for (i = first_socket; i <= last_socket; ++i) {
if (FD_ISSET (i, &accept_fds)) {
new_connection = accept (i, NULL, NULL);
if (new_connection != -1) break;
}
}
if (new_connection != -1) break;
}
accept_mutex_off ();
process the new_connection;
}

accept_mutex_on accept_mutex_off `]b mutex Ѵ. 偿 ڃe mutex ] . mutex [b Ҏ^@ \ƴ. Ҏ^@ (1.3 ) src/conf.h (1.3 ) src/include/ap_config.h rǵǘ. Űľb I(locking) Ҏ^@ ø[ ʱV얿, Ʒ ŰĿ݋ \ Listen C ȝ~[R [.

C AcceptMutex C ȝ~[ mutex @ ] .

AcceptMutex flock

Ҏ^@ IH@ Iױ flock(2) Czx@ ȝ~Ѵ (IH ġb LockFile C r).

AcceptMutex fcntl

Ҏ^@ IH@ Iױ fcntl(2) Czx@ ȝ~Ѵ (IH ġb LockFile C r).

AcceptMutex sysvsem

(1.3 ) Ҏ^@ SysVe ȝ~[ mutex Ѵ. un SysVe b ۃ~ . [b Hġ r[ ʽO @ ] b ƴ (ipcs(8) manpage O). ٸ [b ݋L uid [b CGI (, suexec cgiwrapper ȝ~[ʾb CGI) API ȝ~[ ݋zźΰ@ ] b ƴ. Ʒ ϞV얿 IRIX ŰĿ݋ Ҏ^@ ȝ~[ ʾb (κ IRIX ǻͿ݋ Ҏ^@ ġ L̴).

AcceptMutex pthread

(1.3 ) Ҏ^@ POSIX mutex ȝ~[V얿 POSIX o Ծ@ ŰĶR ȝ~ɸ[, (2.5 ) Solaris݋ װ͙n Ưr 伺݋ ۸[b [. Ҏ^@ CnغٔR ݋L ݋ [@ ȸ[b Ѵ. r ~ ݋z[b ݋Lb ۸[b .

AcceptMutex posixsem

(2.0 ) Ҏ^@ POSIX ȝ~Ѵ. mutex μz o尡 ׾bٔR(segfault) ϞǓ ȸ ʾ݋ ݋L .

Czۿ U ^b ȭ(serialization) Ҏ^ ٔR Ҏ^@ ȝ~[b ȵ带 APR ߰ ġ .

Ob غ [ʻ@ ٸ Ҏ^@ κڷ ^@ ȭ[b Ҏ^ƴ. , μ݋  鿩b ͓ƴ. Ҏ^@ \ ڃe@ C ] ݋ ȭV얿 ü _@ ~[ o[b μ݋ ǻͿ݋ U@ ] . ՙڷ 캼 κГ, ſ ȭ ݋L [ ʾ݋ 켱b .

@ ݋b \ Listen @ ȝ~[ ʾb ͓ ƻƴ. ׵\ Ѵ.

accept ȭ - Ѱ

@ ߼ ݋Lb , ϓ Ѱ ݋Lb ? nzVM ڃe accept(2)݋ 瘷V얿 Ʒл @ Te[ ʽO, O n ^. ׵\ ξb տ݋ [ ʾb (non-blocking) Ҏ^݋ Te[b "ȸ(spinning)" @ }߽O . κ TCP zû@ nz[R ĿΓ accept݋ 瘷b ڃe@ nU ǘ. μz Ѱ @ O ȝ~ڿ_ڷ ưO, Mb Ŀο݋ ȸ[ ^@ T߸[R ٳC I@ ܴ. ȝ~ڿ_ ȵ忡݋b Ʒ ȸ@ ] ^, и힢 ZѴ. E݋ ߼ [ ʾb Ҏ^ ϸ[ θ[ ƾb uʿ ൿ Ͻ.

E݋ 츮b \ ŰĿ݋ ϓ Ѱ 쿡n ȭ[R "" ۸`@ Tߴ. E݋ κ ⺻ڷ ȭ ȝ~Ѵ. z݋ (Ŀ 2.0.30, 128Mb ޸𸮿 Pentium pro) Ѱ ȭ[R [ ʻ@ 쿡 ʴ ] 3% ̸ R. ׵\ ȭ [ ʻ@ ] 100ms Teߴ. @ Ƹn LAN݋ Te[b ׃ ἱV ͓ƴ. ϓ Ѱ ȭ ȝ~[ ʙڷR SINGLE_LISTEN_UNSERIALIZED_ACCEPT rѴ.

Close (lingering)

draft-ietf-http-connection-00.txt 8݋ [ Ȟr ݋L ǷR, _ Ҏ@ xڷ @ ] Ѵ (TCP @ ҎƽO, Ҏ@ ݋ xƴ). @ ٸ ݋L݋b [, Hġb 1.2 rȮ ؿԴ.

@ Ǹ[ Hġ ߰@V \ Ϟ[z L݋ @ Teߴ. TCP Ծ@ FIN_WAIT_2 tӾƿ ٽO r[ ʾ, [n ʾҴ. tӾƿ ^b Czۿ݋ Hġ 1.2b @ @ FIN_WAIT_2 · . @ b ȝ [b _ TCP/IP ġ ~[ ذ ] . ׵\ ȝ ġ TF[ ʾb 찡 (, SunOS4 -- z Ƽz b ȝ@ ġ ] ) V얿 @ ȝ~[ ʱ rߴ.

Ҏ^@ ΰ. [b ӛ SO_LINGER ȝ~[b Ҏ^ƴ. ׵\ un κ TCP/IP zû@ ӛ@ ùٷ [ ʾҴ. ùٷ zÿ݋ mn (, z 2.0.31) Ҏ^@ ٞ Ҏ^ cpu ƌb.

Hġb (http_main.c b) lingering_closeb `] ȝ~Ѵ. `]b ٞ :

void lingering_close (int s)
{
char junk_buffer[2048];

/* shutdown the sending side */
shutdown (s, 1);

signal (SIGALRM, lingering_death);
alarm (30);

for (;;) {
select (s for reading, 2 second timeout);
if (error) break;
if (s is ready for reading) {
if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {
break;
}
/* just toss away whatever is here */
}
}

close (s);
}

ȵb @ @V CPU ȝ~[, Ȟr @ ʿ[. HTTP/1.1 θ O @ ϞѴٔR(persistent), @ ޾b ~@ \ ]@ Q[R݋ ͓ƴ. [ԙn NO_LINGCLOSE rǸ[ @ ȝ~[ @ ] , Ǹ[ ʾb. Ư HTTP/1.1 H (_; Ϟ ¿݋ [@ ٸ ʽO \ ]@ b v) Ϟb lingering_close ]ƴ (׸O H V얿 ȝ~[ I ͓ƴ).

Scoreboard H

Hġ θ ڃe@ scoreboardb @ ݋ _Ѵ. ƻڷξb scoreboard Ϟ޸𸮷 ؾ Ѵ. 츮 Tڰ ش ü ] ų ޻@ Ϟ޸𸮸 ȝ~[ Ѵ. Mb zr b H@ ȝ~[ Ѵ. zr b Hϻ@ O _ڙn (ən ). src/main/conf.h HϿ݋ ȝ~[b Űĸ ã݋ USE_MMAP_SCOREBOARD Ȥ@ USE_SHMGET_SCOREBOARD ȮѴ. [ ( ` ȝ~ HAVE_MMAPƳ HAVE_SHMGETn ) rǸ[R Ϟ޸ ȵ带 ȝ~Ѵ. Czۓ ٸ v Ϟ޸𸮸 ȝ~ѴٔR src/main/http_main.c H@ ]r[ Hġ݋ Ϟ޸𸮸 ȝ~ ] nU _(hook)@ ߰[. ( ġ 츮 ֱ ٶ.)

_ȝ : Hġ z L@ Hġ 1.2 L Ϟ޸𸮸 ȝ~[ Cߴ. z݋ ʱ Hġ L O _ڙn Ę V얓ƴ.

DYNAMIC_MODULE_LIMIT

@ ڷ н ʾbٔR ( ݓƶn @ Ʊ @ оbٔR Ƹn @ ڷ н @ ͓ƴ), ݋L HV -DDYNAMIC_MODULE_LIMIT=0@ ߰Ѵ. ׵\R @ ڷ нƱ Ҵ[b ޸𸮸 Ѵ.

top

ΏU: Czx U@ ڼ м[

ٞ@ Solaris 8݋ worker MPM@ ȝ~ Hġ 2.0.38 Czx U(trace)ƴ. E w ȝ~[ U@ :

truss -l -p httpd_child_pid.

-l ӛ@ ȝ~[R trussb Czx@ [b LWP (lightweight process, 淮 μz--Solaris Ŀ] o) ID UѴ.

ٸ Czۿb strace, ktrace, par @ Czx n䰡 . b 񔇸[.

Ŭƾhb ݋L rⰡ 10KB r H@ ]Ѵ. r H@ ][ ʰų ~[b ]@ U ſ ٸ (Vξb ſ ˾ƺ ).

/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
/67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9

݋ (listener) o尡 LWP #67݋ @ ] .

accept(2) ȭ ȝ~[ ʞ@ ָ[. \ h ٸʾb E worker MPM@ ⺻ڷ ȭ[ ʻ@ accept ȝ~Ѵ.
/65:    lwp_park(0x00000000, 0)                         = 0
/67:    lwp_unpark(65, 1)                               = 0

@ ޾ƵƽO(accept) ob worker o带 r݋ ]@ Q[ Ѵ. E U݋ ]@ Q[b worker o尡 LWP #65@ ] .

/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0

xzh [ Hġb @ ޾Ƶ _(local) ּҸ ˾ƾ Ѵ. (xzh ȝ~[ ʰų Listen C ϵī ּҸ ȝ~[ ʻ@ ) @ x@ ^e ] . ׵\ Ʒ ȭ E ȵǘ.

/65:    brk(0x002170E8)                                 = 0
/65:    brk(0x002190E8)                                 = 0

brk(2) x@ ِ(heap)݋ ޸𸮸 ҴѴ. ݋Lb κ ] QC ü ޸ Ҵ(apr_pool apr_bucket_alloc) ȝ~[V얿 Czx U݋ Czx@ Ⱑ 幰. U݋ ݋Lb C۸[ڸ ü ޸ Ҵڰ ȝ~ ޸𸮺U@ malloc(3)@ xѴ.

/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0

ٞ worker ob Ŭƾh (Hϱv 9)@ ȸ`(non-blocking) · ٲ۴. setsockopt(2) getsockopt(2) x@ Solaris libc Ͽ fcntl(2)@ Q[b ش.

/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97

worker ob Ŭƾh ]@ оb.

/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10

݋L r@ Options FollowSymLinks AllowOverride Noneƴ. E݋ ] Hϰ 丮 lstat(2).htaccess H@ ȝ ʿ䰡 ^. H@ ȝ[, 1) Hϓ b, 2) 丮 Ƈ ^H, stat(2) x⸸ [R ȴ.

/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269

݋Lb sendfilev(2) Czx HTTP [c ] H@ r ] . Sendfile ξb ü ٸ. ٸ CzۓƶR sendfile(2)@ x[ c write(2) writev(2) x@ Ѵ.

/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78

write(2) x@ ٷα(access log) ]@ UѴ. U time(2) x ^@ ָ[. Hġ 1.3 ޸ Hġ 2.0@ C@ ˱ gettimeofday(3) ȝ~Ѵ. gettimeofday ȭ z Solaris @ ü݋b ^ Czx δ ^.

/65:    shutdown(9, 1, 1)                               = 0
/65:    poll(0xFAF7B980, 1, 2000)                       = 1
/65:    read(9, 0xFAF7BC20, 512)                        = 0
/65:    close(9)                                        = 0

worker ob @ ݱ(lingering close)Ѵ.

/65:    close(10)                                       = 0
/65:    lwp_park(0x00000000, 0)         (sleeping...)

ڷ worker ob Ҏ r H@ ݽO, (listener) o尡 ٸ @ Ҵ VM rѴ.

/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)

׵ ob @ ( worker EߓƔR o带 ߾b worker MPM ɿ ) worker o忡 Ҵ[ڸ ٸ @ ޾Ƶ ] . Ub , worker o尡 Ҏ ޻@ @ Q[b ٞ accept(2) (] ſ @ H) Ͻ ] .

:  en  |  fr  |  ko  |  tr 

top

Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
С͸