Re: [squid-users] optimize squid

From: Chris Robertson <crobertson_at_gci.net>
Date: Tue, 16 Jun 2009 12:16:43 -0800

squid proxy wrote:
> hi
>
> I'd like to optimize according to this webpage
>
> http://www.linux-faqs.com/squid.php
>

This article talks about patching ReiserFS into the 2.2 kernel and
adding UDMA 66 support. Neat.

> my squid 2.6.STABLE5 installed on Debian Etch (PC 4, 2GHz, 2GB RAM)
> for about 150 users.
>

For 150 users, you won't likely need these tweaks.

> I should put the following two lines:
>
> ulimit -HSn 8192

This will only make a difference (in Squid 2.6) if squid was compiled
with this limit in place, or specified "--with-max-fd=8192" (or
something like that).

> echo 1024 32768 > /proc/sys/net/ipv4/ip_local_port_range
>
> in /etc/init.d/squid, but I don't know where exactly.
>
> my /etc/init.d/squid:
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> #! /bin/sh
> #
> # squid Startup script for the SQUID HTTP proxy-cache.
> #
> # Version: @(#)squid.rc 2.20 01-Oct-2001 miquels_at_cistron.nl
> #
> ### BEGIN INIT INFO
> # Provides: squid
> # Required-Start: $local_fs $network
> # Required-Stop: $local_fs $network
> # Should-Start: $named
> # Should-Stop: $named
> # Default-Start: 2 3 4 5
> # Default-Stop: 0 1 6
> # Short-Description: Squid HTTP Proxy
> ### END INIT INFO
>
> NAME=squid
> DAEMON=/usr/sbin/squid
> LIB=/usr/lib/squid
> PIDFILE=/var/run/$NAME.pid
> SQUID_ARGS="-D -sYC"
>
> [ ! -f /etc/default/squid ] || . /etc/default/squid
>

Check this file for a line defining "SQUID_MAXFD". It gets used later
to set ulimit.

> . /lib/lsb/init-functions
>
> PATH=/bin:/usr/bin:/sbin:/usr/sbin
>
> [ -x $DAEMON ] || exit 0
>
> grepconf () {
> w=" " # space tab
> sq=/etc/squid/squid.conf
> # sed is cool.
> res=`sed -ne '
> s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
> t end;
> d;
> :end q' < $sq`
> [ -n "$res" ] || res=$2
> echo "$res"
> }
>
> grepconf2 () {
> w=" " # space tab
> sq=/etc/squid/$NAME.conf
> # sed is cool.
> res=`sed -ne '
> s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
> t end;
> d;
> :end q' < $sq`
> [ -n "$res" ] || res=$2
> echo "$res"
> }
>
> #
> # Try to increase the # of filedescriptors we can open.
> #
> maxfds () {
> [ -n "$SQUID_MAXFD" ] || return
> [ -f /proc/sys/fs/file-max ] || return 0
> [ $SQUID_MAXFD -le 4096 ] || SQUID_MAXFD=4096
> global_file_max=`cat /proc/sys/fs/file-max`
> minimal_file_max=$(($SQUID_MAXFD + 4096))
> if [ "$global_file_max" -lt $minimal_file_max ]
> then
> echo $minimal_file_max > /proc/sys/fs/file-max
> fi
> ulimit -n $SQUID_MAXFD
> }
>
> start () {
> cdr=`grepconf2 cache_dir /var/spool/$NAME`
>
> case "$cdr" in
> [0-9]*)
> log_failure_msg "squid: squid.conf contains 2.2.5 syntax -
> not starting!"
> log_end_msg 1
> exit 1
> ;;
> esac
>
> #
> # Create spool dirs if they don't exist.
> #
> if [ -d "$cdr" -a ! -d "$cdr/00" ]
> then
> log_warning_msg "Creating squid spool directory structure"
> $DAEMON -z
> fi
>
> if [ "$CHUID" = "" ]; then
> CHUID=root
> fi
>
> maxfds
>

Right here is where the script is attempting to up the ulimit. Just
below this line would be a fine place to set ip_local_port_range

> umask 027
> cd $cdr
> start-stop-daemon --quiet --start \
> --pidfile $PIDFILE \
> --chuid $CHUID \
> --exec $DAEMON -- $SQUID_ARGS < /dev/null
> return $?
> }
>
> stop () {
> PID=`cat $PIDFILE 2>/dev/null`
> start-stop-daemon --stop --quiet --pidfile $PIDFILE --name squid
> #
> # Now we have to wait until squid has _really_ stopped.
> #
> sleep 2
> if test -n "$PID" && kill -0 $PID 2>/dev/null
> then
> log_action_begin_msg " Waiting"
> cnt=0
> while kill -0 $PID 2>/dev/null
> do
> cnt=`expr $cnt + 1`
> if [ $cnt -gt 24 ]
> then
> log_action_end_msg 1
> return 1
> fi
> sleep 5
> log_action_cont_msg ""
> done
> log_action_end_msg 0
> return 0
> else
> return 0
> fi
> }
>
> case "$1" in
> start)
> log_daemon_msg "Starting Squid HTTP proxy" "squid"
> if start ; then
> log_end_msg $?
> else
> log_end_msg $?
> fi
> ;;
> stop)
> log_daemon_msg "Stopping Squid HTTP proxy" "squid"
> if stop ; then
> log_end_msg $?
> else
> log_end_msg $?
> fi
> ;;
> reload|force-reload)
> log_action_msg "Reloading Squid configuration files"
> start-stop-daemon --stop --signal 1 \
> --pidfile $PIDFILE --quiet --exec $DAEMON
> log_action_end_msg 0
> ;;
> restart)
> log_daemon_msg "Restarting Squid HTTP proxy" "squid"
> stop
> if start ; then
> log_end_msg $?
> else
> log_end_msg $?
> fi
> ;;
> *)
> echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
> exit 3
> ;;
> esac
>
> exit 0
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Piotr
>

Chris
Received on Tue Jun 16 2009 - 20:16:52 MDT

This archive was generated by hypermail 2.2.0 : Wed Jun 17 2009 - 12:00:04 MDT