Search squid archive

Re: Performance Issues Using NTML

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Scott Anctil wrote:
I have deployed a Squid server for a local school board to help with
there ever increasing bandwidth issues. It is running Squid 2.6 Stable
16 under Ubuntu 7.10 server on a HP DL380. This server has 2GB of RAM, 2
dual core 3.06 GHz processors and 288 GB of SAS 15k storage (RAID).

Two points, squid is still single-process, the core will only use one of the CPU.

RAID on the squid cache drive is not a good idea. It is a waste of disk IO maintaining the RAID. Cache can be re-generated as needed from the web.

I am
using NTLM authentication. We have only two schools running on it
(300-500 concurrent connections) and the box is already running at
30-50% CPU consistently. The one time we tried all of the schools
(1000-4000 concurrent connections) the box went to 100% CPU solid and
users were dropping pages. I have been scouring the internet for answers
and have made a number of changes, none of which have helped. Should I
not be expecting more out of this box? Here are the options I used to
compile.

./configure  --with-maxfd=4096  --prefix=/usr/local/squid
--enable-basic-auth-helpers="SMB" --enable-ntlm-auth-helpers="SMB"
--enable-external-acl-helpers="wbinfo_group" --enable-auth="basic,ntlm"
--with-winbind-auth-challenge

Here is my squid.conf

#######################
# Basic Configuration #
#######################

visible_hostname ***************
http_port 3128
cache_dir ufs /usr/local/squid/cache 50000 15 256

Try aufs, its slightly faster on most systems.

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
tcp_outgoing_address 10.1.10.211

outgoing should not be needed, your call though.

append_domain *****************
httpd_suppress_version_string on

why? be proud of your squid. :-)

cache_effective_user squid
authenticate_ttl 24 hours

Really people stay authenticated for 24 hrs?

authenticate_ip_ttl 15 minutes

#############
# Log Files #
#############

cache_access_log /usr/local/squid/var/logs/access.log

that should be just "access_log"

cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log

I'm not certain why this is even still around. Its only useful for debugging the cache store. you an safely set it to "none" and reduce load a lot.


###################
# Control Caching #
###################

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

refresh_pattern         cgi-bin         1 20% 2
refresh_pattern         \.asp$          1 20% 2
refresh_pattern         \.acgi$         1 20% 2
refresh_pattern         \.cgi$          1 20% 2
refresh_pattern         \.pl$           1 20% 2
refresh_pattern         \.shtml$        1 20% 2
refresh_pattern         \.php3$         1 20% 2
refresh_pattern         \?              1 20% 2
refresh_pattern         \.gif$          10080   90%     43200
refresh_pattern         \.jpg$          10080   90%     43200
refresh_pattern         \.bom\.gov\.au     30   20%       120
refresh_pattern         \.html$           480   50%     22160
refresh_pattern         \.htm$            480   50%     22160
refresh_pattern         \.class$        10080   90%     43200
refresh_pattern         \.zip$          10080   90%     43200
refresh_pattern         \.jpeg$         10080   90%     43200
refresh_pattern         \.mid$          10080   90%     43200
refresh_pattern         \.shtml$          480   50%     22160
refresh_pattern         \.exe$          10080   90%     43200
refresh_pattern         \.thm$          10080   90%     43200
refresh_pattern         \.wav$          10080   90%     43200
refresh_pattern         \.txt$          10080   90%     43200
refresh_pattern         \.cab$          10080   90%     43200
refresh_pattern         \.au$           10080   90%     43200
refresh_pattern         \.mov$          10080   90%     43200
refresh_pattern         \.xbm$          10080   90%     43200
refresh_pattern         \.ram$          10080   90%     43200
refresh_pattern         \.avi$          10080   90%     43200
refresh_pattern         \.chtml$          480   50%     22160
refresh_pattern         \.thb$          10080   90%     43200
refresh_pattern         \.dcr$          10080   90%     43200
refresh_pattern         \.bmp$          10080   90%     43200
refresh_pattern         \.phtml$          480   50%     22160
refresh_pattern         \.mpg$          10080   90%     43200
refresh_pattern         \.pdf$          10080   90%     43200
refresh_pattern         \.art$          10080   90%     43200
refresh_pattern         \.swf$          10080   90%     43200
refresh_pattern         \.mp3$          10080   90%     43200
refresh_pattern         \.ra$           10080   90%     43200
refresh_pattern         \.spl$          10080   90%     43200
refresh_pattern         \.viv$          10080   90%     43200
refresh_pattern         \.doc$          10080   90%     43200
refresh_pattern         \.gz$           10080   90%     43200
refresh_pattern         \.Z$            10080   90%     43200
refresh_pattern         \.tgz$          10080   90%     43200
refresh_pattern         \.tar$          10080   90%     43200
refresh_pattern         \.vrm$          10080   90%     43200
refresh_pattern         \.vrml$         10080   90%     43200
refresh_pattern         \.aif$          10080   90%     43200
refresh_pattern         \.aifc$         10080   90%     43200
refresh_pattern         \.aiff$         10080   90%     43200
refresh_pattern         \.arj$          10080   90%     43200
refresh_pattern         \.c$            10080   90%     43200
refresh_pattern         \.cpt$          10080   90%     43200
refresh_pattern         \.dir$          10080   90%     43200
refresh_pattern         \.dxr$          10080   90%     43200
refresh_pattern         \.hqx$          10080   90%     43200
refresh_pattern         \.jpe$          10080   90%     43200
refresh_pattern         \.lha$          10080   90%     43200
refresh_pattern         \.lzh$          10080   90%     43200
refresh_pattern         \.midi$         10080   90%     43200
refresh_pattern         \.movie$        10080   90%     43200
refresh_pattern         \.mp2$          10080   90%     43200
refresh_pattern         \.mpe$          10080   90%     43200
refresh_pattern         \.mpeg$         10080   90%     43200
refresh_pattern         \.mpga$         10080   90%     43200
refresh_pattern         \.pl$           10080   90%     43200
refresh_pattern         \.ppt$          10080   90%     43200
refresh_pattern         \.ps$           10080   90%     43200
refresh_pattern         \.qt$           10080   90%     43200
refresh_pattern         \.qtm$          10080   90%     43200
refresh_pattern         \.ras$          10080   90%     43200
refresh_pattern         \.sea$          10080   90%     43200
refresh_pattern         \.sit$          10080   90%     43200
refresh_pattern         \.tif$          10080   90%     43200
refresh_pattern         \.tiff$         10080   90%     43200
refresh_pattern         \.snd$          10080   90%     43200
refresh_pattern         \.wrl$          10080   90%     43200
refresh_pattern         ^ftp://           480   60%     22160
refresh_pattern         ^gopher://         30   20%       120
refresh_pattern         .                 480   50%     22160

acl post_requests method POST
cache deny post_requests

acl No_Cache_Sites url_regex "/usr/local/squid/etc/squid-no_cache.acl"

There is a HUGE cause of CPU wastage.

Spit that file into two lists:
 a) with pure domains or partial domains ie ".gov" for everything in *.gov

 b) with URI that absolutely MUST be matched with regex pattern

Put (a) into a dstdomain ACL. It's amazingly fast and less CPU than regex. Bonus points for removing (b) and regex entirely.


no_cache deny No_Cache_Sites

That should be just "cache deny No_Cache_Sites"


##########################################
# Enable the NTLM Authentication Program #
##########################################

auth_param ntlm program /usr/bin/ntlm_auth
--helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth
--helper-protocol=squid-2.5-basic
auth_param basic children 25
auth_param ntlm children 25 auth_param ntlm keep_alive on

25 helpers. Are they really needed? can much of the load on these be done concurrently?


########
# ACLs #
########

external_acl_type nt_group ttl=60 children=25 protocol=2.5 %LOGIN
/usr/local/squid/libexec/wbinfo_group.pl

Ditto for these 25 helpers. Can it also be done concurrently?

acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255

Its nicer to read
  acl all src all
  acl localhost src 127.0.0.1

and 'all' will be pre-defined from 2.6stable17 on

acl Safe_Ports port 80
acl Safe_Ports port 21
acl Safe_Ports port 9080
acl Safe_Ports port 812
acl Safe_Ports port 9090
acl Safe_Ports port 8090
acl Safe_Ports port 9000
acl Safe_Ports port 22
acl Safe_Ports port 88
acl Safe_Ports port 8000
acl Safe_Ports port 8008

acl SSL_Ports port 443

acl purge method PURGE
acl CONNECT method CONNECT

acl NTLMUsers proxy_auth REQUIRED
acl Students external nt_group students

acl Blocked_Sites url_regex "/usr/local/squid/etc/squid-block.acl"
acl Bypass_Sites url_regex "/usr/local/squid/etc/squid-bypass.acl"

Again with the regex. See my comments earlier about using dstdomain as much as possible instead.


##################
# Control Access #
##################

http_access allow Bypass_Sites
http_access deny Blocked_Sites
http_access deny SSL_Ports NTLMUsers Students
http_access allow Safe_Ports NTLMUsers Students
http_access deny NTLMUsers Students
http_access allow NTLMUsers

http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all


Amos

[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux