Search squid archive

Re: optimize squid

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

 



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@xxxxxxxxxx
#
### 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

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

  Powered by Linux