Sun Microsystems 7 manual

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132

Go to page of

A good user manual

The rules should oblige the seller to give the purchaser an operating instrucion of Sun Microsystems 7, along with an item. The lack of an instruction or false information given to customer shall constitute grounds to apply for a complaint because of nonconformity of goods with the contract. In accordance with the law, a customer can receive an instruction in non-paper form; lately graphic and electronic forms of the manuals, as well as instructional videos have been majorly used. A necessary precondition for this is the unmistakable, legible character of an instruction.

What is an instruction?

The term originates from the Latin word „instructio”, which means organizing. Therefore, in an instruction of Sun Microsystems 7 one could find a process description. An instruction's purpose is to teach, to ease the start-up and an item's use or performance of certain activities. An instruction is a compilation of information about an item/a service, it is a clue.

Unfortunately, only a few customers devote their time to read an instruction of Sun Microsystems 7. A good user manual introduces us to a number of additional functionalities of the purchased item, and also helps us to avoid the formation of most of the defects.

What should a perfect user manual contain?

First and foremost, an user manual of Sun Microsystems 7 should contain:
- informations concerning technical data of Sun Microsystems 7
- name of the manufacturer and a year of construction of the Sun Microsystems 7 item
- rules of operation, control and maintenance of the Sun Microsystems 7 item
- safety signs and mark certificates which confirm compatibility with appropriate standards

Why don't we read the manuals?

Usually it results from the lack of time and certainty about functionalities of purchased items. Unfortunately, networking and start-up of Sun Microsystems 7 alone are not enough. An instruction contains a number of clues concerning respective functionalities, safety rules, maintenance methods (what means should be used), eventual defects of Sun Microsystems 7, and methods of problem resolution. Eventually, when one still can't find the answer to his problems, he will be directed to the Sun Microsystems service. Lately animated manuals and instructional videos are quite popular among customers. These kinds of user manuals are effective; they assure that a customer will familiarize himself with the whole material, and won't skip complicated, technical information of Sun Microsystems 7.

Why one should read the manuals?

It is mostly in the manuals where we will find the details concerning construction and possibility of the Sun Microsystems 7 item, and its use of respective accessory, as well as information concerning all the functions and facilities.

After a successful purchase of an item one should find a moment and get to know with every part of an instruction. Currently the manuals are carefully prearranged and translated, so they could be fully understood by its users. The manuals will serve as an informational aid.

Table of contents for the manual

  • Page 1

    Sun Ja va S y stem W eb Ser v er 7.0 Updat e 1 P er formanc e T uning , Sizing , and Sc aling Guide Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. Part N o: 820–1067[...]

  • Page 2

    Copyright 2007 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. All rights reserved. Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. I n particular, and without limitation, these intellectual property rights may include one or more U.S[...]

  • Page 3

    Cont ents Preface ...................................................................................................................................................11 1 Performance and Monitoring Overview .......................................................................................... 19 P erformance Issues ..............................[...]

  • Page 4

    2 T uning Sun Ja va Sy stem W eb Server ................................................................................................ 39 General Tuning Tips ........................................................................................................................... 39 Understanding Threads, Processes, and Connections .............[...]

  • Page 5

    Low-Memory Situations ..................................................................................................................... 86 Too Few Threads ................................................................................................................................. 86 Cache Not Utilized .......................................[...]

  • Page 6

    Networking ........................................................................................................................................ 102 6 Scalability Studies .............................................................................................................................103 Study Goals ...................................[...]

  • Page 7

    T ables T ABLE 1–1 M ethods of Monitoring P erformance ..................................................................... 22 T ABLE 2–1 Parameter M apping to server.xml ........................................................................ 46 T ABLE 2–2 Connection Queue Statistics .........................................................[...]

  • Page 8

    T ABLE 6–17 SSL P erformance Test: P erl CGI Scalability ......................................................... 120 T ABLE 6–18 SSL P erformance Test: C CGI Scalability ............................................................. 121 T ABLE 6–19 SSL P erformance Test: NSAPI Scalability .....................................................[...]

  • Page 9

    F igur es FIGURE 2–1 Web Server C onnection Handling .......................................................................... 40 9[...]

  • Page 10

    10[...]

  • Page 11

    P refac e This guide discusses adjustments you can make that may improve the performance of Sun J ava System Web Server (henceforth known as Web Server). The guide provides tuning, scaling, and sizing tips and suggestions; possible solutions to common performance problems; and data from scalability studies. I t also addresses miscellaneous congu[...]

  • Page 12

    T ABLE P–1 Books in the Web Server Documentation Set Documentation Title Contents Sun Java System Web Server 7.0 Update 1 Documentation Center Web Server documentation topics organized by tasks and subject Sun Java System Web Server 7.0 Update 1 R elease Notes ■ Late-breaking information about the software and documentation ■ Supported platfo[...]

  • Page 13

    T ABLE P–1 Books in the Web Server Documentation Set (Continued) Documentation Title Contents Sun Java System Web Server 7.0 Update 1 Developer’ s Guide to J ava Web Applications Implementing J ava Servlets and JavaServer P ages TM (JSP TM ) technology in Sun Java System Web Server Sun Java System Web Server 7.0 Update 1 A dministrator’ s Con[...]

  • Page 14

    T ABLE P–2 Default Paths and F ile Names Placeholder Description Default Value install-dir Represents the base installation directory for Web Server Sun Java Enterprise System (J ava ES) installations on the Solaris TM platform: /opt/SUNWwbsvr7 Java ES installations on the Linux and HP -UX platform: /opt/sun/webserver/ Java ES installations on th[...]

  • Page 15

    T ypographic C on ventions The following table describes the typographic changes that are used in this book. T ABLE P–3 Typographic Conventions T ypeface Meaning Example AaBbCc123 The names of commands, les, and directories, and onscreen computer output Edit your .login le. Use ls -a to list all les. machine_name% you have mail. AaBbCc12[...]

  • Page 16

    T ABLE P–4 Symbol Conventions (Continued) Symbol Description Example Meaning → Indicates menu item selection in a graphical user interface. File → New → Templates From the F ile menu, choose New. From the New submenu, choose Templates. Documentation, Support, and T raining The Sun web site provides information about the following additional[...]

  • Page 17

    Sun W elcomes Y our C omments Sun is interested in improving its documentation and welcomes your comments and suggestions. To share your comments, go to http://docs.sun.com and click Send Comments. In the online form, provide the full document title and part number. The part number is a 7-digit or 9-digit number that can be found on the book's[...]

  • Page 18

    18[...]

  • Page 19

    P er formance and Monit oring O ver view Sun J ava System Web Server (henceforth known as Web Server) is designed to meet the needs of the most demanding, high-trac sites in the world. I t can serve both static and dynamically generated content. Web Server can also run in SSL mode, enabling the secure transfer of information. This guide helps yo[...]

  • Page 20

    servers the goal might be to provide a targeted level of performance at dierent price points. You need to dene what performance means for your particular situation. Here are some areas to consider: ■ The number of peak concurrent users ■ Security requirements Encrypting your Web Server’ s data streams with SSL makes an enormous diere[...]

  • Page 21

    Ser ver F arms The clustering features of Web Server allow you to easily deploy to a server farm. Because all servers in a server farm share identical congurations, tuning is not done on a server-by-server basis. 64–Bit Ser vers The performance for the 64–bit Web Server is not necessarily better than the performance for the 32–bit Web Serv[...]

  • Page 22

    Monitoring Ser ver P er formance Making the adjustments described in this guide without measuring their eects doesn’ t make sense. If you don’ t measure the system’ s behavior before and after making a change, you won’t know whether the change was a good idea, a bad idea, or merely irrelevant. You can monitor the performance of Web Serve[...]

  • Page 23

    Because using the Administration Server takes computing resources, the command-line interface and the A dmin C onsole are the most costly monitoring methods. For more information on these monitoring methods, see the following sections: ■ “A bout Statistics” on page 23 ■ “M onitoring Current A ctivity Using the Admin Console” on page 25 [...]

  • Page 24

    ■ J ava DataBase C onnectivity ( JDBC TM ) (available if a JDB C resource is created and the connection pool is accessed) For the virtual server, statistics are available in the following areas: ■ General ■ Response ■ Web A pplications ■ Proling Data (available if proling is enabled) ■ Servlet and Servlet Response Cache (available[...]

  • Page 25

    Restart the ser ver . ▼ T o Enable Statistics fr om the CLI Enter the following CLI c ommand to enable statistics collection: ./wadm set-stats-prop --user= admin_user –password-file= password-le --config= mycong enabled=true To disable statistics, set enabled to false. T o set the inter val and enable proling , use the set-stats-prop i[...]

  • Page 26

    Monitoring C urrent A c tivity Using the CLI You can also view statistics information using the wadm commands get-config-stats , get-virtual-server-stats , get-webapp-stats and get-servlet-stats . Note that the examples below do not contain all possible command options. For the complete syntax, see the help for the command. ▼ T o Monitor Sta tist[...]

  • Page 27

    process.1.timeStarted=Jan 5, 2007 2:20:53 PM process.1.DNSCache.countCacheHits=687804 process.1.DNSCache.countAsyncNameLookup=0 process.1.DNSCache.countAsyncLookupsInProgress=0 process.1.DNSCache.flagAsyncEnabled=false process.1.DNSCache.countAsyncAddrLookups=0 process.1.DNSCache.flagCacheEnabled=true process.1.DNSCache.countCacheMisses=75 process.[...]

  • Page 28

    process.1.fileCache.countInfoMisses=19 process.1.jvm.countGarbageCollections=96 process.1.jvm.sizeHeap=67762048 process.1.jvm.countThreads=79 process.1.jvm.countClassesUnloaded=0 process.1.jvm.vMVendor=Sun Microsystems Inc. process.1.jvm.countTotalClassesLoaded=3170 process.1.jvm.vMName=Java HotSpot(TM) Server VM process.1.jvm.countTotalThreadsStar[...]

  • Page 29

    The syntax gets the statistics for a given web application deployed on the given virtual server of the given instance. To get the aggregated web application statistics for a given conguration across all the nodes where the conguration has been deployed, use the command without the node option. The following example shows the output for the UR[...]

  • Page 30

    Acc ess the stats-xml URI, for example: http:// yourhost : port /stats-xml The statistics are displayed in XML format. ▼ T o Enable the stats-xml URI fr om the CLI Use the follo wing command to enable stats-xml : ./wadm enable-stats-xml --user= admin-user --password-file= admin-password-le [--uri-prefix= prex ]--config= cong-name --vs= v[...]

  • Page 31

    ■ session-replication ■ thread ■ thread-pool ■ thread-pool-bucket (process-level) ■ virtual-server ■ web-app-bucket ▼ T o View stats-xml Output from the CLI In addition to a URI, you can also access stats-xml output through the command-line interface. I t is enabled by default. Unlike viewing stats-xml output through the URI, the A dm[...]

  • Page 32

    Note – The statistics displayed by perfdump are for the server as a whole. If you enable perfdump on one virtual server, it displays statistics for the whole server, not an individual virtual server. Fr om Common T asks, select a conguration. Select the vir tual ser ver and click Edit V ir tual Ser ver . Click the Monitoring Settings tab . Sel[...]

  • Page 33

    ▼ T o View the perfdump Data from the CLI In addition to a URI, you can also access perfdump output through the command-line interface. I t is enabled by default. Unlike viewing perfdump output through the URI, the A dministration Server must be running to view perfdump output at the command-line. However, if request processing threads are hangin[...]

  • Page 34

    ------------------------ Active Sessions 128 Keep-Alive Sessions 0 Total Sessions Created 128/128 Server cache disabled Native pools: ---------------------------- NativePool: Idle/Peak/Limit 1/1/128 Work Queue Length/Peak/Limit 0/0/0 TestPool: Idle/Peak/Limit 5/5/10 Work Queue Length/Peak/Limit 0/0/15 DNSCacheInfo: ------------------ enabled yes Ca[...]

  • Page 35

    29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 requ[...]

  • Page 36

    Congur ation You must specify all conguration information for performance buckets in the magnus.conf and obj.conf les. Only the default-bucket is automatically enabled. First, you must enable performance statistics collection and perfdump . The following examples show how to dene new buckets in magnus.conf : Init fn= " define-perf-[...]

  • Page 37

    ■ Number of Invocations is the total number of times that the function was invoked. This diers from the number of requests in that a function could be called multiple times while processing one request. The percentage column for this row is calculated in reference to the total number of invocations for all of the buckets. ■ Latency is the ti[...]

  • Page 38

    38[...]

  • Page 39

    T uning Sun Java Syst em W eb S er ver This chapter describes specic adjustments you can make that might improve Sun J ava System Web Server performance. I t provides an overview of Web Server's connection-handling process so that you can better understand the tuning settings. The chapter includes the following topics: ■ “General Tuning[...]

  • Page 40

    ■ A djust gradually When adjusting a quantitative parameter, make several stepwise changes in succession, rather than trying to make a drastic change all at once. Dierent systems face dierent circumstances, and you might leap right past your system’ s best setting if you change the value too rapidly. ■ Start fresh A t each major system [...]

  • Page 41

    A request processing thread might also be instructed to send the request to a dierent thread pool for processing. For example, if the request processing thread must perform some work that is not thread-safe, it might be instructed to send part of the processing to the N ativePool. Once the N ativePool completes its work, it communicates the resu[...]

  • Page 42

    Connection–Handling magnus.conf Dir ec tives f or NSAPI In addition to the settings discussed above, you can edit the following directives in the magnus.conf le to congure additional request-processing settings for NSAPI plug-ins: ■ KernelThreads – Determines whether NSAPI plug-ins always run on kernel-scheduled threads (Windows only) ?[...]

  • Page 43

    3. A dierent thread in my-custom-pool , called the B1 thread in this example, picks up the request queued by A1. B1 completes the request and returns to the wait stage. 4. The A1 thread wakes up and continues processing the request. I t executes the ObjectType SAF and moves on to the Service function. 5. Because the Service function must be proc[...]

  • Page 44

    Init funcs= " pcheck_uri_clean_fixed_init " shlib= " C:/Sun/webserver7/lib/custom.dll " fn= " load-modules " NativeThread= " no " The NativeThread ag aects all functions in the funcs list, so if you have more than one function in a library, but only some of them use native threads, use separate Init lin[...]

  • Page 45

    The advantage of multiple processes is that legacy applications that are not thread-aware or thread-safe can be run more eectively in Sun J ava System Web Server. However, because all of the Sun J ava System extensions are built to support a single-process threaded environment, they might not run in the multi-process mode. The Search plug-ins fa[...]

  • Page 46

    ■ J ava applications that do not require session management Do not use the MaxP rocs directive when the Sun Java System Web Server performs session management for J ava applications. You can set the value for MaxProcs by editing the MaxProcs parameter in magnus.conf . Note – You will receive duplicate startup messages when running your server i[...]

  • Page 47

    T ABLE 2–1 Parameter M apping to server.xml (Continued) Web Server 6.1 parameter Web Server 7.0 server.xml element or attribute A dmin Console Location wadm command dns-cache-init Init SAF cache size max-entries element of the dns-cache element Conguration's P erformance tab ⇒ DNS tab set-dns-cache-prop command's max-entries proper[...]

  • Page 48

    T ABLE 2–1 Parameter M apping to server.xml (Continued) Web Server 6.1 parameter Web Server 7.0 server.xml element or attribute A dmin Console Location wadm command NativePoolQueueSize in magnus.conf Unchanged NativePoolStackSize in magnus.conf Unchanged RqThrottle in magnus.conf max-threads element of the thread-pool element Conguration'[...]

  • Page 49

    ■ “J ava Virtual Machine (JVM) Information” on page 70 ■ “Web A pplication Information” on page 71 ■ “JDBC Resource Information” on page 72 Once you have viewed the statistics you need, you can tune various aspects of your server’ s performance at the conguration level using the A dmin C onsole's P erformance tab. The Ad[...]

  • Page 50

    T ABLE 2–2 Connection Queue Statistics Present N umber of Connections Queued 0 Total N umber of Connections Queued 11222922 A verage C onnections O ver Last 1 Minute 90.35 A verage C onnections O ver Last 5 Minutes 89.64 A verage C onnections O ver Last 15 Minutes 54.02 Maximum Queue Size 160032 P eak Queue Size 1853 N umber of Connections O ver?[...]

  • Page 51

    This setting is not tunable. A ver age Queue Length The A verage Queue Length shows the average number of connections in the queue over the last one-minute, ve-minute, and 15–minute intervals. This setting is not tunable. A ver age Queuing Delay The A verage Queueing Delay is the average amount of time a connection spends in the connection que[...]

  • Page 52

    If you have created multiple HTTP listeners, perfdump displays all of them. To edit an HTTP listener using the A dmin C onsole, for the conguration, select the HTTP Listeners tab. Click the listener name to edit the listener. To congure an HTTP listener using the command-line interface, use the command wadm set-http-listener-prop . For more i[...]

  • Page 53

    Default V ir tual Ser ver Virtual servers work using the HTTP 1.1 Host header. I f the end user’ s browser does not send the Host header, or if the server cannot nd the virtual server specied by the H ost header, Web Server handles the request using a default virtual server. You can congure the default virtual server to send an error mes[...]

  • Page 54

    T ABLE 2–3 Keep-Alive Statistics (Continued) Connection Timeout 10 Both HTTP 1.0 and HTTP 1.1 support the ability to send multiple requests across a single HTTP session. A web server can receive hundreds of new HTTP requests per second. If every request was allowed to keep the connection open indenitely, the server could become overloaded with[...]

  • Page 55

    T uning You can tune the maximum number of connections that the server allows to wait at one time before closing the oldest connection in the A dmin C onsole by editing the Maximum Connections eld on the conguration's Performance tab ⇒ HTTP tab, under K eep Alive Settings. The default is 200. In the command-line interface, use the max-[...]

  • Page 56

    Keep-Alive P oll Interval The keep-alive poll interval species the interval (in seconds) at which the system polls keep-alive connections for further requests. The default is 0.001 second, the lowest value allowed. I t is set to a low value to enhance performance at the cost of CPU usage. To tune the poll interval, edit the P oll Interval eld[...]

  • Page 57

    Also, chunked encoding could aect the performance for HTTP 1.1 workload. Tuning the response buer size could positively aect the performance. A higher response buer size in the conguration's P erformance tab ⇒ HTTP tab would result in sending a Content-length: header, instead of chunking the response. To set the buer size u[...]

  • Page 58

    The equivalent information as the Total N umber of Threads is available through the Admin Console from the Monitoring tab ⇒ I nstances sub tab, under General Statistics. To see the maximum threads allowed, see the Maximum Threads eld on the conguration's P erformance tab ⇒ HTTP sub tab, under Thread P ool Settings. To get the equival[...]

  • Page 59

    Suitable maximum threads values range from 100-500, depending on the load. Maximum Threads represents a hard limit for the maximum number of active threads that can run simultaneously, which can become a bottleneck for performance. The default value is 128. The thread pool minimum threads is the minimum number of threads the server initiates upon s[...]

  • Page 60

    File Cache Entries 141/1024 File Cache Hit Ratio 652/664 ( 98.19%) Maximum Age 30 Accelerator Entries 120/1024 Acceleratable Requests 281/328 ( 85.67%) Acceleratable Responses 131/144 ( 90.97%) Accelerator Hit Ratio 247/281 ( 87.90%) The following table shows the le cache statistics as displayed in the A dmin Console: T ABLE 2–4 File Cache Sta[...]

  • Page 61

    File Cache Entries number, you can improve the accelerator cache utilization by following the tuning information described in “A cceleratable Requests” on page 61 and “Acceleratable Responses” on page 61 . Ac celeratable Requests The number of client requests that were eligible for processing by the accelerator cache. Only simple GET reques[...]

  • Page 62

    T uning Higher hit ratios result in better performance. To maximize the hit ratio, see the tuning information for “A cceleratable Responses” on page 61 . File C ache Enabled If the cache is disabled, the rest of this section is not displayed in perdump . I n the Admin Console, the File Cache Statistics section shows zeros for the values. T unin[...]

  • Page 63

    T uning Set the maximum age based on whether the content is updated (existing les are modied) on a regular schedule. For example, if content is updated four times a day at regular intervals, you could set the maximum age to 21600 seconds (6 hours). Otherwise, consider setting the maximum age to the longest time you are willing to serve the pr[...]

  • Page 64

    ... </Object> <Object name= " myname " > Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file nocache= "" </Object> In the above example, the server does not cache static les from /export/mydir/ when requested by the URL prex /myurl . For more information on editing obj.conf , see Sun J ava Sys[...]

  • Page 65

    ReplaceFiles: false ReplaceInterval: 1 milliseconds HitOrder: false CacheFileContent: true TransmitFile: false MaxAge: 3600 seconds MaxFiles: 600000 files SmallFileSizeLimit: 500000 bytes MediumFileSizeLimit: 1000001 bytes BufferSize: 8192 bytes CopyFiles: false Directory for temporary files: /tmp Hash table size: 1200007 buckets You can include a [...]

  • Page 66

    Nativ e Thread Pool The following example shows native thread pool information as it appears in perfdump : Native pools: ---------------------------- NativePool: Idle/Peak/Limit 1/1/128 Work Queue Length/Peak/Limit 0/0/0 my-custom-pool: Idle/Peak/Limit 1/1/128 Work Queue Length/Peak/Limit 0/0/0 If you have dened additional custom thread pools, t[...]

  • Page 67

    Peak (P eak Requests Queued in the Admin Console) is the highest number of requests that were ever queued up simultaneously for the use of a native thread since the server was started. This value can be viewed as the maximum concurrency for requests requiring a native thread. Limit is the maximum number of requests that can be queued at one time to[...]

  • Page 68

    The dierence between this value and the maximum threads is the number of requests reserved for non-native thread requests, such as static HTML and image les. Keeping a reserve and rejecting requests ensures that your server continues to ll requests for static les, which prevents it from becoming unresponsive during periods of very heavy[...]

  • Page 69

    CacheEntries 4/1024 HitRatio 62854802/62862912 ( 99.99%) AsyncDNS Data: ------------------ enabled yes NameLookups 0 AddrLookups 0 LookupsInProgress 0 The following example shows the DNS Cache information as displayed in the A dmin C onsole: T ABLE 2–6 DNS Cache Statistics Total Cache Hits 62854802 Total Cache Misses 6110 N umber of Asynchronous [...]

  • Page 70

    T uning You can set the maximum size of the DNS cache in the A dmin Console in the Maximum Cache Size eld on the conguration's P erformance tab ⇒ DNS sub tab, under DNS Cache Settings. To set it using the command-line-interface, use wadm set-dns-cache-prop and set the max-entries property. The default cache size is 1024. The value rang[...]

  • Page 71

    T ABLE 2–7 Java Virtual M achine (JVM) Statistics (Continued) Total N umber of Classes Unloaded 0 N umber of Garbage Collections Occurred 3 N umber of Live Threads 8 N umber of Started Threads 9 P eak Live Thread C ount 8 M ost of these statistics are not tunable. They provide information about the JVM's operation. Another source of tuning i[...]

  • Page 72

    On the Monitoring Statistics page , click V irtual Ser ver Statistics. Click the virtual ser ver name. On the Vi r tual Ser ver Monitoring Statistics page , click W eb Applications. Select the web application for which to view statistics fr om the W eb Application pull-down menu. W eb Application Sta tistics The following table shows an example of [...]

  • Page 73

    The use of connection pooling improves application performance by doing the following: ■ Creating connections in advance. The cost of establishing connections is moved outside of the code that is critical for performance. ■ Reusing connections. The number of times connections are created is signicantly lowered. ■ Controlling the amount of [...]

  • Page 74

    Connections This number shows the current JDBC connections, including both free and busy connections. Tuning – This setting cannot be tuned, but it is a good indicator of recent pool activity. If the number of connections is consistently higher than the minimum number of connections, consider increasing the minimum number of connections to be clo[...]

  • Page 75

    JDBC Resource Sta tistics Not A vailable in the Admin C onsole Some JDBC statistics are available through the wadm get-config-stats command (using the --node option), through stats-xml , and through SNMP but not through the Admin Console. maxConnections – The congured maximum size of the pool. Use as a reference for other statistics. To change[...]

  • Page 76

    minimize creation of connections during the life of the application and minimize pool resizing. Use a lower number if the pool load is expected to be small, to minimize resource consumption. ■ Maximum connections The maximum number of connections that a pool can have at any given time. Defaults to 32. Use this setting to enforce a limit in the am[...]

  • Page 77

    The user-dened table to use for validation when the validation method is table . Defaults to test . If this method is used, the table used should be dedicated only to validation, and the number of rows in the table should be kept to a minimum. ■ Fail All Connections Indicates whether all connections in the pool are re-created when one is found[...]

  • Page 78

    While it would be extremely unusual to hit this possible performance problem, the number of groups cached in a single A CL cache entry can be tuned with Maximum Groups setting on the conguration's P erformance tab ⇒ Cache sub tab. Or you can use the max-groups-per-user property of the wadm set-acl-cache-prop command. The maximum age setti[...]

  • Page 79

    When adding a web application, either through the A dmin C onsole or CLI, choose the precompile JSP s option. Enabling precompiled JSPs allows all the JSP s present in the web application to be pre-compiled, and their corresponding servlet classes are bundled in the web application's WEB-INF/lib or WEB-INF/classes directory. When a JSP is acce[...]

  • Page 80

    A v oiding Directories in the Classpath For certain applications (especially if the J ava Security M anager is enabled) you can improve performance by ensuring that there are no unneeded directories in the classpath. To do so, change the Server Class Path, Class P ath Prex, and Class P ath Sux elds on the conguration's J ava tab ?[...]

  • Page 81

    T uning MMapS essionManager (UNIX/Linux) The following example describes the eect on process size when conguring the persistence-type= " mmap " using the manager-properties properties. For more information, see “MMap Session M anager (UNIX Only)” in Sun J ava System Web Server 7.0 Update 1 Developer’ s Guide to J ava Web A ppl[...]

  • Page 82

    Using nd-pa thinfo-for ward The find-pathinfo-forward parameter used in obj.conf can help improve your performance. I t is used with the PathCheck function find-pathinfo and the NameTrans functions pfx2dir and assign-name . The find-pathinfo-forward parameter instructs the server to search forward for PATH_INFO in the path after ntrans-base , in[...]

  • Page 83

    In the previous example, the server does not stat for path / ntrans-base /nsfc and / ntrans-base /nsfc/* if ntrans-base is set. If ntrans-base is not set, the server does not stat for URLs /nsfc and /nsfc/* . By default, ntrans-base is set. The example assumes the default PathCheck server functions are used. When you use nostat= virtual-path in the[...]

  • Page 84

    84[...]

  • Page 85

    C ommon P er formanc e Pr oblems This chapter discusses common web site performance problems, and includes the following topics: ■ “check-acl Server A pplication Functions” on page 85 ■ “Low-Memory Situations” on page 86 ■ “Too Few Threads” on page 86 ■ “Cache Not Utilized” on page 87 ■ “Keep-Alive Connections Flushed”[...]

  • Page 86

    Lo w-Memor y Situations If Web Server must run in low-memory situations, reduce the thread limit to a bare minimum by lowering the value of the Maximum Threads setting on the conguration's P erformance Tab ⇒ HTTP sub tab. You can also set it with wadm set-thread-pool-prop command's max-threads property. Your web applications running [...]

  • Page 87

    Cache Not Utilized If the le cache is not utilized, your server is not performing optimally. Since most sites have lots of GIF or JPEG les that should always be cacheable, you need to use your cache eectively. Some sites, however, do almost everything through CGIs, SHTML, or other dynamic sources. Dynamic content is generally not cacheable[...]

  • Page 88

    Caution – On UNIX/Linux systems, if the keep-alive maximum connections value is too high, the server can run out of open le descriptors. Typically 1024 is the limit for open les on UNIX/Linux, so increasing this value above 500 is not recommended. Log F ile Modes Keeping the log les on a high-level of verbosity can have a signicant im[...]

  • Page 89

    Platf orm-Specic Issues and Tips This chapter provides platform-specic tuning tips, and includes the following topics: ■ “Solaris Platform-Specic Issues” on page 89 ■ “Solaris File System Tuning” on page 93 ■ “Solaris Platform-Specic P erformance Monitoring” on page 94 ■ “Tuning Solaris for P erformance Benchmarkin[...]

  • Page 90

    An alternative way to make this change is using the ulimit –n " value " command. Using this command does not require a system restart. However, this command only changes the login shell, while editing the etc/system le aects all shells. F ailure to Connect to HT TP Ser ver If users are experiencing connection timeouts from a brows[...]

  • Page 91

    C onnec tion Refused Errors If users are experiencing connection refused errors on a heavily loaded server, you can tune the use of network resources on the server. When a TCP/IP connection is closed, the port is not reused for the duration of tcp_time_wait_interval (default value of 240000 milliseconds). This is to ensure that there are no leftove[...]

  • Page 92

    ■ nca(1) ■ snca(1) ■ nca.if(4) ■ ncakmod.conf(4) ■ ncalogd.conf(4) ▼ T o Enable SNCA to W ork W ith W eb S er ver This procedure assumes that SNCA has been congured, as discussed above. Fr om the Common T asks page, choose a conguration and click E dit Conguration. Click the HTTP Listeners tab and selec t the HT TP listener to [...]

  • Page 93

    Solaris File S y stem T uning This section discusses changes that can be made for le system tuning, and includes topics that address the following issues: ■ “High F ile System Page-I n Rate” on page 93 ■ “Reduce File System H ousekeeping” on page 93 ■ “Long Service Times on Busy Disks or Volumes” on page 93 Please read the desc[...]

  • Page 94

    (the %b and svc_t columns, respectively). Service times are unimportant for disks that are less than about 30% busy, but for busier disks, service times should not exceed about 20 milliseconds. If your busy disks have slower service times, improving disk performance might help Web Server performance substantially. Your rst step should be to bala[...]

  • Page 95

    ■ The mpstat 60 command gives a detailed look at CPU statistics, while the netstat -i 60 command summarizes network activity. Long- T erm Syst em Monitoring I t is important not only to " spot-check " system performance with the tools mentioned above, but to collect longer-term performance histories so you can detect trends. If nothing [...]

  • Page 96

    T uning Solaris for P er formance Benchmarking The following table shows the operating system tuning for Solaris used when benchmarking for performance and scalability. These values are an example of how you might tune your system to achieve the desired result. T ABLE 4–1 Tuning Solaris for Performance Benchmarking Parameter Scope Default Value T[...]

  • Page 97

    T uning UltraSP ARC® T1–Based Sy stems f or P er formance Benchmarking Use a combination of tunable parameters and other parameters to tune your system for performance benchmarking. These values are an example of how you might tune your system to achieve the desired result. T uning Opera ting Sy stem and T CP Settings The following table shows t[...]

  • Page 98

    T ABLE 4–2 Tuning 64–bit Systems for Performance Benchmarking (Continued) Parameter Scope Default Value T uned Value Comments tcp_conn_req_max_q0 ndd /dev/tcp 1024 3000 tcp_max_buf ndd /dev/tcp 4194304 tcp_cwnd_max ndd/dev/tcp 2097152 tcp_xmit_hiwat ndd /dev/tcp 8129 400000 To increase the transmit buer. tcp_recv_hiwat ndd /dev/tcp 8129 4000[...]

  • Page 99

    tmp= ‘ expr $tmp + 1 ‘ done done Put all network interfaces into a single group. For example: $ifconfig ipge0 group webserver $ifconfig ipge1 group webserver W eb S er ver Start O ptions In some cases, performance can be improved by using large page sizes. To start the 32–bit Web Server with 4 MB pages: LD_PRELOAD_32=/usr/lib/mpss.so.1 ; expo[...]

  • Page 100

    100[...]

  • Page 101

    Sizing and Scaling Y our Ser ver This chapter examines the subsystems of your server, and provides recommendations for optimal performance. The chapter includes the following topics: ■ “64-Bit Server” on page 101 ■ “Processors” on page 101 ■ “M emory” on page 102 ■ “Drive Space” on page 102 ■ “Networking” on page 102 6[...]

  • Page 102

    Memor y As a baseline, Web Server requires 64 MB RAM. M ultiple CPUs require at least 64 MB for each CPU. For example, if you have four CPUs, you should install at least 256 MB RAM for optimal performance. For high numbers of peak concurrent users, also allow extra RAM for the additional threads. After the rst 50 concurrent users, add an extra 5[...]

  • Page 103

    Scalabilit y Studies This chapter describes the results of scalability studies. You can refer to these studies for a sample of how the server performs, and how you might congure your system to best take advantage of Web Server’ s strengths. This chapter includes the following topics: ■ “Study Goals” on page 103 ■ “Study Conclusion”[...]

  • Page 104

    Study C onclusion When tuned, Sun J ava System Web Server 7.0 scaled almost linearly in performance for dynamic and static content. Hardw are The studies (except for the e-commerce study) were conducted using the following hardware. For hardware information for the e-commerce study, see “H ardware for E-Commerce Test” on page 122 . Web Server s[...]

  • Page 105

    Softw ar e The load driver for these tests was an internally-developed J ava application framework called the Faban driver. C onguration and T uning The following tuning settings are common to all the tests in this study. Individual studies may also have additional conguration and tuning information. /etc/system tuning: set rlim_fd_max=500000[...]

  • Page 106

    ndd -set /dev/tcp tcp_max_buf 4194304 ndd -set /dev/tcp tcp_cwnd_max 2097152 ndd -set /dev/tcp tcp_recv_hiwat 400000 ndd -set /dev/tcp tcp_xmit_hiwat 400000 Netw ork Congur ation Since the tests used multiple network interfaces, it was important to make sure that all the network interfaces were not going to the same core. N etwork interrupts wer[...]

  • Page 107

    5 no-intr since 12/07/2006 09:17:04 ................. W eb Server T uning The following table shows the tuning settings used for the Web Server. T ABLE 6–1 Web Server Tuning Settings Component Default T uned Access logging enabled = true enabled = false Thread pool min-threads = 16 max-threads = 128 stack-size = 131072 queue-size = 1024 min-threa[...]

  • Page 108

    P er formance T ests and Results This section contains the test-specic conguration, tuning, and results for the following tests: ■ “Static Content Test” on page 108 ■ “Dynamic C ontent Test: Servlet” on page 110 ■ “Dynamic C ontent Test: C CGI” on page 111 ■ “Dynamic C ontent Test: P erl CGI” on page 113 ■ “Dynamic[...]

  • Page 109

    T ABLE 6–3 File Cache Conguration Default T uned enabled = true max-age = 30 sec max-entries = 1024 sendfile = false max-heap-file-size = 524288 max-heap-space = 10485760 max-mmap-file-size = 0 max-mmap-space = 0 enabled = true max-age = 3600 max-entries = 1048576 sendfile = true max-heap-file-size = 1200000 max-heap-space = 8000000000 max-mma[...]

  • Page 110

    Dynamic Content T est: Ser vlet This test was conducted using the servlet. The test prints out the servlet's initialization arguments, environments, request headers, connection and client information, URL information, and remote user information. JVM tuning settings were applied to the server. The goal was to saturate the cores on the server a[...]

  • Page 111

    The following table shows the results for the dynamic content servlet test. T ABLE 6–6 Dynamic C ontent Test: Servlet Scalability Number Of Cores Aver age Thr oughput (ops/sec) Av erage Response T ime (ms) 2 5287 19 4 10492 19 6 15579 19 The following is a graphical representation of servlet scalability results. Dynamic Content T est: C C GI This[...]

  • Page 112

    T ABLE 6–7 CGI Tuning Settings Default T uned idle-timeout = 300 cgistub-idle-timeout = 30 min-cgistubs = 0 max-cgistubs = 16 idle-timeout = 300 cgistub-idle-timeout = 1000 min-cgistubs = 100 max-cgistubs = 100 The following table shows the results of the dynamic content test for C CGI. T ABLE 6–8 Dynamic C ontent Test: C CGI Scalability Number[...]

  • Page 113

    Dynamic Content T est: P erl C GI This test was conducted with P erl script called printenv.pl that prints the CGI environment. CGI tuning settings were applied to the server. The goal was to saturate the cores on the server and nd out the respective throughput and response time. The following table shows the CGI tuning settings used in the dyna[...]

  • Page 114

    Dynamic Content T est: NSAPI The NSAPI module used in this test was printenv2.so . I t prints the NSAPI environment variables along with some text to make the entire response 2 KB. The goal was to saturate the cores on the server and nd out the respective throughput and response time. The only tuning for this test was optimizing the path checks [...]

  • Page 115

    PHP Sc alability T ests PHP is a widely-used scripting language uniquely suited to creating dynamic, Web-based content. I t is the most rapidly expanding scripting language in use on the Internet due to its simplicity, accessibility, wide number of available modules, and large number of easily available applications. The scalability of Web Server c[...]

  • Page 116

    T ABLE 6–12 Tuning Settings for FastCGI Plug-in Test Conguration T uning magnus.conf Init fn= " load-modules " shlib= " path_to_web_server_plugin_dir /fastcgi/libfastcgi.so " funcs= " responder_fastcgi " shlib_flags= " (global|now) " obj.conf NameTrans fn= " assign-name " from= " /fcgi/* &[...]

  • Page 117

    PHP Scalability with NSAPI The following table shows the Web Server tuning settings for the PHP with NSAPI test. T ABLE 6–14 NSAPI Plug-in Conguration for PHP magnus.conf Init fn= " load-modules " shlib= " libphp5.so " funcs= " php5_init,php5_close,php5_execute " Init fn= " php5_init " errorString= "[...]

  • Page 118

    T ABLE 6–15 PHP Scalability with NSAPI Number of Cores Average Throughput (ops/sec) Av erage Response T ime (ms) 2 950 105 4 1846 108 6 2600 115 The following is a graphical representation of PHP scalability with NSAPI. SSL P er formance T est: Static C ontent This test was performed with static download of a randomly selected le from a pool o[...]

  • Page 119

    ■ Web Server is congured with 64 bit The following table shows the SSL static content test results. T ABLE 6–16 SSL Performance Test: Static Content Scalability Number of Cores Average Throughput (ops/sec) Av erage Response T ime (ms) 2 2284 379 4 4538 387 6 6799 387 The following is a graphical representation of static content scalability w[...]

  • Page 120

    T ABLE 6–17 SSL Performance Test: P erl CGI Scalability Number of Cores Average Throughput (ops/sec) Av erage Response T ime (ms) 2 303 329 4 580 344 6 830 361 The following is a graphical representation of P erl scalability with SSL. SSL P er formance T est: C C GI This test was performed by accessing a C executable called printenv in SSL mode. [...]

  • Page 121

    T ABLE 6–18 SSL Performance Test: C CGI Scalability Number of Cores Average Throughput (ops/sec) Av erage Response T ime (ms) 2 792 126 4 1499 133 6 2127 141 The following is a graphical representation of C CGI scalability with SSL. SSL P er formance T est: NSAPI The NSAPI module used in this test was printenv2.so . I t prints the NSAPI environme[...]

  • Page 122

    T ABLE 6–19 SSL Performance Test: NSAPI Scalability Number of Cores Average Throughput (ops/sec) Av erage Response T ime (ms) 2 2729 29 4 5508 30 6 7982 32 The following is a graphical representation of NSAPI scalability with SSL. E-Commerc e W eb Application T est The e-commerce application is a more complicated application that utilizes a datab[...]

  • Page 123

    Database system conguration: ■ Sun Microsystems Sun Fire 880 ( 900MH z US-III+) ■ 16384 M egabytes of memory ■ Solaris 10 operating system ■ Oracle 10.1.0.2.0 Driver system conguration: ■ Sun Microsystems Sun Fire 880 ( 900MH z US-III+) ■ Solaris 10 operating system Network conguration: The Web Server, database, and the driver [...]

  • Page 124

    JVM tuning: -server -Xmx1500m -Xms1500m -Xss128k -XX:+DisableExplicitGC E-commerce Application Description The test models an e-commerce web site that sells items from a large inventory. I t uses the standard web application model-view-controller design pattern for its implementation: the user interface (that is, the view) is handled by 16 diere[...]

  • Page 125

    T ABLE 6–20 Performance Test P ass Criteria (Continued) T ransaction 90th Perc entile Response Time (Seconds) BuyRequest 3 CustomerRegistration 3 Home 3 NewP roducts 5 OrderDisplay 3 OrderInquiry 3 ProductDetail 3 SearchRequest 3 SearchResults 10 ShoppingCart 3 The following table shows the e-commerce web application test results. T ABLE 6–21 E[...]

  • Page 126

    The following is a graphical representation of e-commerce web application scalability. Number of CPUs E-commerce W eb Application Scalability 11500 11000 10500 10000 9500 9000 8500 8000 7500 7000 2 4 Users Users Number of CPUs E-commerce W eb Application Scalability 1150 1200 1250 1300 1350 1100 1050 1000 950 900 850 800 750 24 Throughput(ops/sec) [...]

  • Page 127

    Index Numbers and Symbols 64–bit servers performance advantages, 21 scaling, 101 A acceptor threads, 52 access time updates, 93 acl-bucket, 36 A CL user cache, 77-78 max-groups-per-user, 78 max-users, 77 maximum age, 78 activating statistics, 24-25 A ddLog, 83 A dmin C onsole, more information about, 12 assign-name function, 82 async DNS cache, 7[...]

  • Page 128

    disabling network interrupts, 98-99 disk conguration, 98 DNS cache, 68-70 async enabled, 70 current entries, 69-70 entries, 69-70 hit ratio, 70 maximum entries, 69-70 drive space, sizing issues, 102 dynamic control and monitoring, le cache, 64 dynamic reload interval, 79 E enable-perfdump command, 32 enable-stats-xml command, 30 enabling stat[...]

  • Page 129

    J J ava ES monitoring console, 37 J ava heap tuning, 71 J ava HotSpot VM, 71 java.lang.OutOfM emoryError, 86 J ava Security Manager, conguring, 79 J ava VM heap space, 86 J ava web applications, tuning performance, 78-81 JDBC connection pooling, improving application performance, 73 JDBC resources, 72-77 connection settings, 75-77 connections, 7[...]

  • Page 130

    monitoring server performance (Continued) using J ava EE monitoring console, 37 using perfdump, 31-37 using performance buckets, 35-37 using SE toolkit, 95 using stats-xml, 29-31 mpstat 60 command, 95 multi-process mode, 44-46 N N ameTrans, 43, 82 native thread pool, 43-44, 66 N ativePoolM axThreads, 66, 68 N ativePoolM inThreads, 68 N ativePoolQue[...]

  • Page 131

    Q quality of service features, 20 statistics and, 24 queued connections, in JDBC resources, 74 R ratio, hit, 62 reapIntervalSeconds, 80 refresh, 65 reload-interval, 78 restart, 65 rlim_fd_max, 89, 96, 97 S scalability studies, 103-126 SE toolkit, 95 segmap_percent, 93 send-cgi, 35 send-le, nocache parameter, 63 server instances, statistics, 23 S[...]

  • Page 132

    TerminateTimeout directive, 42 test results, 103-126 thread pools, 48, 65-68 custom, 42-43 disabled, 41 native thread pool, 43-44, 66 threads, 40-46 acceptor, 52 creation statistics, 57-59 keep-alive, 56 maximum, 58 maximum and SNCA, 92 multi-process mode, 44 too few, 86 tips, general, 39-40 transaction isolation level, JDBC resource, 77 tuning max[...]