backlog-bumper.sh
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:2k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #
  3. # script to bump up tcp_conn_req_max > 32 in Solaris 2.4
  4. # This script should be run by root and only by the competent who
  5. # realize that this changes the kernel on the fly and its consequences
  6. # READ THE FOLLOWING BEFORE USING THIS SCRIPT.
  7. #
  8. # Disclaimer:This is not an officially supported script from Sun
  9. #
  10. # Questions/comments about this script to mukesh.kacker@eng.sun.com
  11. #
  12. #
  13. # Warning ! This can affect the behavior of *all*  TCP listeners on
  14. # the machine. It has the potential to increase kernel memory  useage.
  15. # Since the the tcp_conn_req_max parameter is the limit
  16. # the kernel imposes on the listeners, it is only relevant for listener
  17. # applications which are compiled with the backlog parameter of the
  18. # liten() call higher than the limit imposed by the kernel. The default
  19. # limit is 5 in Solaris 2.4 and can be routinely bumped up as follows
  20. # ndd -set tcp_conn_req_max <new limit upto 32>
  21. #
  22. # ndd imposes a max bound on how high this limit can be bumped up since
  23. # it affects kernel memory resource useage and it is not wise to allow it
  24. # to be increased to a dangerous level. This script is to allow experiments
  25. # to increase it to higher values (The unreleased Solaris 2.5 increases
  26. # this limit to 1024 and that should make this script obsolete).
  27. # The exact value chosen should take into account the
  28. # memory available on the machine and how many TCP listeners are likely
  29. # to be affected by this. The known bound that people have been known
  30. # to have experimented with is 128.
  31. # This script operates by first bumping up the maximum imposed by ndd for
  32. # this parameter using adb on the running kernel image  and then using in
  33. # a normal manner to set it to this value.
  34. #
  35. # To undo its affects, you can use adb to undo what is done here (left
  36. # as an exercise to the reader :-)) or just reboot machine
  37. #
  38. fail()
  39. {
  40. echo "$*" 1>&2
  41. echo "Aborting command" 1>&2
  42. exit 1
  43. }
  44. verify_root_user()
  45. {
  46. set `id`
  47. test "$1" = "uid=0(root)" || fail "You must be super user to run this script."
  48. }
  49. verify_useage()
  50. {
  51. if [ $# -ne 1 ]; then
  52. progname=`basename $0`
  53. fail "Usage: $progname <limit in decimal>"
  54. exit 1
  55. fi
  56. }
  57. main()
  58. {
  59. verify_root_user
  60. verify_useage $*
  61. limit=$1
  62. if [ $limit -gt 32 ]; then
  63. adb -w -k /dev/ksyms /dev/mem << EOF 2>&1 >/dev/null
  64. tcp_param_arr+14/W 0t$limit
  65. EOF
  66. fi
  67. ndd -set /dev/tcp tcp_conn_req_max $limit
  68. }
  69. main $*