作者存档: - 第2页

限制普通用户su权限

1: /etc/pam.d/su
#auth required pam_wheel.so use_uid
2: /etc/login.defs
SU_WHEEL_ONLY yes

Oracle 10g EM Console重建

原文: http://hi.baidu.com/sevenqxy/blog/item/da4bed1fad5fb3f1e1fe0b44.html
重建时可能遇到的问题:
1.EM Configuration issue
2.OC4J Configuration issue
按照如下步骤正常完成Oracle 10g EM Console重建。
os:solaris 10
oracle:10.2.0
1.查看当前状态:emctl status dbconsole

2.重建:emca -config dbcontrol db -repos recreate

3.如果遇到:oracle.sysman 报错,导致不成功,则
a. drop user sysman cascade;
b. drop role MGMT_USER;
c. drop user MGMT_VIEW cascade;
d. drop public synonym MGMT_TARGET_BLACKOUTS;
e. drop public synonym SETEMVIEWUSERCONTEXT;
f. emca -config dbcontrol db -repos create

4.打开服务:emctl start dbconsole

5.遇到:OC4J Configuration issue 报错,检查发现指定目录下没有提示的文件夹,只有一个类似的,
cp -r 一个提示的文件夹。重新执行emctl start dbconsole,成功。

6.查看当前状态:emctl status dbconsole

7.端口号可查看文件:$ORACLE_HOME/install/portlist.ini

Root partition as SquashFS + Aufs2

原帖: https://forums.gentoo.org/viewtopic-t-784340-start-0.html
useful links: http://en.gentoo-wiki.com/wiki/Initramfs

Here’s my way to boot from a squashed root filesystem wich is readonly. The squashed image is in this example located on a harddisk partition and not on a cdrom drive. With the help of this forum and http://en.gentoo-wiki.com/wiki/Initramfs I managed it to work (copy-paste…).

My partitions in the following example:
/dev/sda1 /boot
/dev/sda2 / (this is the root wich will be squashed; later unused)
/dev/sda3 /mnt/imgpart (this is the partition where the squash image resides)

0. Forget genkernel -> it’s too complicated

1a. You have a running Gentoo system
1b. You need a compiled kernel in /usr/linux

my current conditions:
* Found kernel source directory:
* /usr/src/linux
* Found kernel object directory:
* /lib/modules/2.6.29-gentoo-r6/build
* Found sources for kernel version:
* 2.6.29-gentoo-r6
2. Emerge some stuff
代码:

emerge -pv git aufs2 busybox
[ebuild R ] sys-apps/busybox-1.14.2 USE="pam static -debug -make-symlinks -savedconfig (-selinux)" 0 kB
[ebuild U ] dev-util/git-1.6.4 [1.6.3.3] USE="bash-completion curl -gtk iconv perl xinetd -cgi -cvs -doc -emacs -mozsha1 (-ppcsha1) -subversion -threads -tk -webdav" 2,357 kB
[ebuild U ] sys-fs/aufs2-0_p20090727 [0_p20090601-r1] USE="kernel-patch -debug -inotify -ramfs" 0 kB

note: aufs2-0_p20090727 doesn’t work with gentoo-sources-2.6.29, but aufs2-0_p20090601-r1 works out of the box

3. Create the initramfs directory
Do the steps according to http://en.gentoo-wiki.com/wiki/Initramfs and hirakendu examples
代码:

mount /boot
mkdir /usr/src/initramfs
cd /usr/src/initramfs
mkdir -p bin lib dev etc proc sbin sys mnt/union mnt/static mnt/dynamic mnt/imgpart
mkdir -p lib/modules/2.6.29-gentoo-r6/misc # used for "aufs" kernel module
cp -a /lib/modules/2.6.29-gentoo-r6/misc/aufs.ko lib/modules/2.6.29-gentoo-r6/misc/
cp -a /bin/busybox bin/
ln -s busybox bin/sh
touch etc/mdev.conf
cp -a /lib/{ld-*,libc-*,libc.so*,libdl*} lib/
cp -a /lib/{libm-*,libm.so*,libpam.so*,libpam_misc*} lib/

4. Create a new init shell script
This one is a bit raw, but you can use it as a good starting point.

nano -w init
代码:

#!/bin/busybox sh

# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys

busybox --install -s

mknod /dev/null c 1 3
mknod /dev/tty c 5 0

# Do your stuff here.
echo "This script mounts rootfs RO with an aufs RW layer."
modprobe aufs

sleep 7
mdev -s

# Parse the kernel command line from grub
CMDLINE="$(cat /proc/cmdline)"
parse_disk() {
    if [ "$(echo $1|cut -c -5)" = "UUID=" ]; then
        # $1 is a UUID
        echo $(findfs $1)
    elif [ "$(echo $1|cut -c -6)" = "LABEL=" ]; then
        # $1 is a LABEL
        echo $(findfs $1)
    elif [ "$(echo $1|cut -c -5)" = "/dev/" ]; then
        # $1 is a device name
        echo $1
    else
         # $1 is unrecognized.
        echo "unknow-disk"
    fi
}
for p in ${CMDLINE};
do
    key=${p%%=*}
    value=${p#*=}

    case $key in
        imgpart)
            IMGPART=`parse_disk $value`
        ;;
        imgfile)
            IMGFILE=$value
        ;;
    esac
done
if [ -z "${IMGPART}" ]; then
    echo "Specify the squash image partition after the kernel command ${CMDLINE}"
    echo "example: kenrel... imgpart=/dev/sda2 imgfile=/gentoo.sqs"
    exec /bin/sh
    exit 0
fi
if [ -z "${IMGFILE}" ]; then
    echo "Specify the squash image file after the kernel command ${CMDLINE}"
    echo "example: kenrel... imgpart=/dev/sda2 imgfile=/gentoo.sqs"
    exec /bin/sh
    exit 0
fi
echo IMGPART=${IMGPART}
echo IMGFILE=${IMGFILE}
if [ ! -b "${IMGPART}" ]; then
    echo No partition with ${IMGPART} has been found
    exec /bin/sh
    exit 0
fi
# ok, parsing done
# Mount the partitions
# 1) mount the partition where the squash image resides
mount -o ro ${IMGPART} /mnt/imgpart
# 2) init a loop pointing to the image file
loop_free=$(losetup -f | sed s#p/#p#)
losetup $loop_free /mnt/imgpart/${IMGFILE}
# 3) mount the squashfs to /mnt/static
mount -t squashfs $loop_free /mnt/static
# Note: if you don't want to use a squashed image, you just
# can mount your read only root to /mnt/static
# example: mount -o ro /dev/sda2 /mnt/static
# 4) mount a memory filesystem for the write access to the static image
# unclear: memory size? -o size=1024M
mount -t tmpfs tmpfs /mnt/dynamic
# 5) mount the writable overlay to the static image
mount -t aufs -o br=/mnt/dynamic:/mnt/static=ro none /mnt/union
# Clean up.
mount --move /mnt/dynamic /mnt/union/mnt/dynamic
mount --move /mnt/static /mnt/union/mnt/static
mount --move /mnt/imgpart /mnt/union/mnt/imgpart
umount /proc
umount /sys
# Boot the real thing.
exec switch_root /mnt/union /sbin/init
echo "Failed to switch_root, dropping to a shell"
exec /bin/sh

5. Create your own initramfs
Attention: it’s created in /boot!
代码:

mount /boot
chmod a+x /usr/src/initramfs/init
find . -print0 | cpio -ov -0 --format=newc | gzip -9 > /boot/my-initramfs.cpio.gz

6. Edit your grub.conf
nano -w /boot/grub/grub.conf

代码:
title=My initramfs with 2.6.29
root (hd0,0)
kernel /kernel-2.6.29-generic-a imgpart=/dev/sda3 imgfile=/gentoo-lxde.squash
initrd /my-initramfs.cpio.gz

7. Create the squash image of the root
(Note: remove the root / entry from /etc/fstab)
Do this NOT from a running system but take a Live Distro and mount the root device:

代码:
mount /dev/sda2 /mnt/gentoo
mount /dev/sda3 /mnt/imgpart
cd /mnt/gentoo
mksquashfs . /mnt/imgpart/gentoo-lxde.squash

Note
There is a problem on unmounting the disks on system halt:
- Unmounting loopback devices failed: in use but fuser finds nothing
- the same for /mnt/dynamic /mnt/static /mnt/imgpart
-> maybe somebody has a solution for this…

Good luck!
claudio

[转来的]一篇很好的《电台学习材料》

(一)

车台?手台?

大家一定对无线电台感兴趣吧?每每走到大街上都能看到一些车顶上安装着形状各异的天线,那些车中,有一部分就是“业余无线电爱好者”,俗称“火腿”

大家肯定对加入到他们的行列中感兴趣

我在这里简单的给那些想要加入的朋友们唠叨唠叨,呵呵

说到 业余无线电爱好者,先说说谁来管,怎么管,知道了一些相关的法律法规,知道了一些加入程序,对大家有很大的帮助

首先说说“无线电管理局”――前身为“无线电管理委员会”,这就是大家经常挂在嘴边的“无委会”,跟下面要提到的“无线电运动协会”可是两回事儿,大家千万要注意这两者的区别,别一张嘴就叫人家笑话。“无线电管理局”是管理除军队外,全国所有无线电相关的事务,像频率划分,设备检验,电台准用等等,它是一个行政管理机构,对于我们业余无线电爱好者来说,它负责业余无线电爱好者们设台申请的审批,检验设备,以及核配电台呼号等一系列的管理。有些朋友说了,这不都是无线电协会管吗?呵呵,在这里我特别介绍一下,这些事情都是由“无线电管理局来管理”,那协会又干什么呢?我在下面会提到的。在这里告诉大家,您使用的无线电发射设备是要有国家相应的管理机构来检验核准的,否则您的一些行为都是违法行为,这点您一定要注意。不论是哪一个国家,对于无线电管理都是严格的,因为它涉及到了国家安全以及社会安全,因此大家在使用的时候一定要注意――合法使用无线电设备。这对您自己也是一个有效的保护,因为合法使用是受到保护的。

“中国业余无线电运动协会”,简称――“无线电协会”,它是由国家体育总局航管理中心主管的社会团体,它的主要工作内容是组织无线电爱好者,积极的参加无线电相关的比赛或活动。加入协会成为会员,是由无线电协会来管理的,也就是说,全国的业余爱好者加入协会,成为会员,这些工作是由协会来组织进行的。对于北京来说(每个地方都根据当地无线电管理机构的规定有不同的运作模式)验机、核配电台执照(全国大部分地区由协会负责,部分地区是由当地组织的)等工作,目前是由“国家无线电管理局”委派“无线电运动协会”来完成的,也就是说,对于验机以及核配呼号协会只是协助管理局完成。

在这里再絮叨一句, 400MHz的频率(即430-440),业余无线电只是作为次要业务出现的,就是说,我们要无条件的优先让主要业务的电台使用400MHz。在北京,无线电管理局只批准了3个频点――439.750 / 434.750 / 438.500 使用其他400MHz的任意频点都是不合法的。

关于相关的法律法规以及频率划分等,在您报名加入协会后,会给您一个《资料汇编》,这里详尽的介绍了作为一个爱好者应该遵循的原则和规定,要想保护自己的合法权利,那您就要守法,只有这样才能保证你的利益不受损害。我在加入协会前,也是心浮气躁,没有仔细的揣摩,后来有时间了,定下心来好好的看看了,才发现这本书对于爱好者起步很有益处。希望准备或已经加入的朋友有时间好好的看看这本书。然后再推荐一本由BA1AA童效勇老师和BA4RC陈方老师编写的――《业余无线电通信》,这作为对无线电爱好的朋友来说是一本不错的启蒙读本。

加入协会:
中国业余无线电协会,位于北京市天坛东门附近
由天坛东门向南走,在过第二个过街天桥后出主路,然后沿着辅路走到第三个过街天桥下右转,向西一直走到头,就看见了我们称之为――会员之家的会员服务部,报名,升级,补办会员会籍手续等等,所有的事情都在这里
我讲述的够清楚了,哈哈哈,您要是还找不到,那就只能怪您自己路痴了

报名时带4张1寸照片,身份证以及身份证复印件,交纳报名费、当年会费、培训费、会刊费共计100元,在会员服务中心填写一张入会申请表,三张设台申请表(一定要用正楷些清楚您的姓名,不少朋友因此耽误了培训时间),然后留下可以及时找到您的有效电话,等待电话通知培训考试

一般考试都是安排在周六或周日,培训时间要根据报名的人数来安排,培训地点由于协会没有固定场所,因此每次都要租借场地,所以地点也是不固定的。
在这里顺便说一句:在培训现场很多参加培训的会员违反会场的规定,禁烟区吸烟,随地乱扔烟头废弃物,导致以前培训的几个地点都不再租借给协会作为培训的场地,因此希望准备参加培训的朋友注意保持场地的卫生环境。

在培训时,请您带好纸笔以及《资料汇编》(别人代报名的您要及时的找代报名人索要汇编),随手做一些记录,很多考试内容都在讲课时出现,有一本《资料汇编》,还有您随手的笔记,您考试的时候根本不用看别人的,也不必费心的到网上找答案带着以备摘抄。这点可以告诉您,考试的试题总是在变换的,你在网上找到的答案没多大用处,要是在考试的时候被点名,也够尴尬的了。其实考试题并不难,目的只是叫大家能够知道一些相关的知识,您要是培训不听,等着抄,那培训还有什么意义啊?到头来您还是什么都不明白,就连最基本的规范通连用语您都不知道,那您要是再跟别人说:我是HAM,那才叫汗颜呢!

培训结束后,等待判卷,一会儿就可以取得会员证以及电台操作证(记住,这并不代表您就可以使用电台设备了),然后您就可以高高兴兴的回家了,而义务工作的人员还要在现场打扫战场,把那些不留神丢弃的废弃物还要收拾干净,给主人家留一个好印象,要不下回人家不叫用了。
请注意:拿到电台执照后,您就可以等待验机了,验机的消息就不通过电话通知到个人了,这时候您也要养成一个习惯了,就是每周的周五晚上9:00,频率是439.750MHz守听台网,有电台执照和合法呼号的朋友可以在里面报到守听。有验机的消息会在里面通知大家的。另外,每周五都是大家周末回家团聚的时候,协会的工作人员还要驱车赶到协会为大家组织台网,宣布一些事情和一些重要通知,既便您台网不能报到,在一边守听,也是对协会工作人员的一种鼓励和支持啊!

接下来说道正题上了,也是大家最关心的――购买设备
其实就我这几年的体会,最应该关心的应该是怎样遵守法律法规,怎样守法合法的玩儿好无线电,呵呵,在这里还是请各位自己体会吧,反正我说了你们也未必就听啊!哈哈哈!

购买无线电设备:
手台、车台,又称之为无线电对讲机,目前使用最多的是U/V频段的设备,也就是常说的400兆和150兆,这是初级爱好者必定要涉及的频率,也是您成为HAM的第一步

手台,是一种以电池供电的小型无线电设备,随身携带方便,发射功率一般都在5W以下

现在常见的国产设备像5118、3268、71B、6288等等,这些设备价格低廉,一般都在400元以内,是一种单波段的设备(只有400兆或者只有150兆),这种设备适合于不经常使用无线电的初级爱好者或者本身对无线电并不感兴趣的人群

进口的手台常见的有71A、308 、278、378、F6A、90A、7R、5R、2R、60R等等,这种设备一般都在1500-2500元左右,已经属于奢侈品行列了,适用于那些无线电爱好者或者喜欢炫耀的人群

车台由于国内产品极少,所以就大概说说进口设备。进口的车载电台品种很多,像YAESU的7800、8800、8900 KENWOOD的461、V7 ICOM的208H 2720 等等,价格也都在1800-3000元左右

还有一些更高档的设备,对于非爱好者来说已经没有必要介绍了,那些爱好者们也不需要我介绍,他们自己就会搞明白的,另外一些是专业设备,像MOTO的,皮实,但是设置频率不方便,您要是喜欢可以去打听打听,我就不多说了!

HF频段的短波电台也是品种繁多,但是没有一个是国产的
比如大家经常听到的897,857,706,100D等等,这些都是比较低档的短波设备,这些设备还都兼顾着U/V频段,因此对于准备以后上短波的朋友来说,购买这种设备可以一网打尽,HF/VHF/UHF这些业余爱好者聚集的频段都有了,可以说是一机在手,江山你有了!呵呵!这些设备价格一般都在5000-10000之间

好了,说说您想挑选什么样的设备吧

先说说车台手台的差别
其实没什么差别,无非是体积和功率的差别,其他的没有什么可比性
手台功率小,车台功率大,这谁都知道
有的人说:手台接收效果不好。那是相对来说,因为手台的天线受限,导致接收效果差的表象,其实把手台接一个外接天线,接受效果跟车台应该是不相上下的,发射那就不能比了,功率在那里摆着那
有个朋友曾经跟我说起过,他在安贞桥的家里用手台可以跟大兴的旧宫的朋友通联上,我问他住在多少层,他说20层,我笑了,对他说:假设你住在5层,天线用高增益直立天线(大家俗称的棒子),架设在20层的楼顶,用-9的馈线引下接在电台上,即便是50W发射,也未必就比用手台5W站在20层的楼顶上效果好,因为在视距传输的U/V频段,高度永远是第一位的,那位朋友问我,天线都在20层啊?我对他说:天线都是在20层,但是车台通过馈线传输信号,但是大部分都损失在了线路上,信号到了天线的时候,已经快要损失殆尽了,肯定比不上手台实实在在的5W功率,因为它的功率基本没有损失,全部发射出去了。
所以不要仅仅看到功率大一定就效果好,具体问题还要具体分析
情况一:车内安装车载电台,一般都要使用-3馈线,馈线长度不要超过5米,即便是质量很好的也会有损耗的,天线尽量使用吸盘,吸附在车顶中央,这个位置是相对最佳的,假如没有条件,那只能用卡边,安装在车侧或者后备箱侧缘了,以损失效率的代价换来安装位置。
情况二:车载电台家中架设,先要购置一个通信用稳压电源,一般车载电台是使用13.8V直流电,根据最大发射功率来配置电源的输出电流指标,一般50W的电台使用30A电源足够了,然后就可以在家中架设电台了。
如果您住的楼层很高,天线上楼顶又有一定的困难,那么我建议您买一个好一些的车载天线,吸附在窗外的空调室外机上,这样效果会很好的,不比您在窗外架设棒子差多少。高楼层,天线不能上楼顶,在窗外架设棒子的行为是浪费,还会招致邻居的不满。
如果能上楼顶,那么最好使用棒子,馈线尽可能的短(千万别短到都够不到电台,那就不是无线电,是笑话了),保证效果都没的说,要是不好就说明您的人品有问题了。建议-5馈线不要超过15米,-7馈线不要超过25米,-9馈线不要超过40米(要是根据计算公式计算,长度远远大于这个尺寸,但是我认为不靠普)。这是个人观点,要是按照这个架设我保证您没问题,要是有问题还是您的人品问题,与我无关。
您要是住在一个20层的楼里,你在3层住,我只有一个办法――搬家,除非您能够忍受极差的信号,您只好在窗外随便弄一个什么天线将就着用吧!我管这个叫盐碱地,没招!即便您天线可以上楼,这么长的馈线,信号损耗太大了,什么天线都没用,花大把的钱换来的却是微弱的信号,我觉得您有这钱还不如捐给希望工程呢!

也就想到这些,都半夜了,所以很多情况也都想不起来了,有时间再补充吧!
2005-11-3 03:16 打虎[BJ-054]

继续阅读 »

tomcat 一些参数

用处              JVM选项                                                      说明
————————————————————————————
内存设置 | -Xms384M                                               | 设置JVM启动时的堆(heap)内存大小
内存设置 | -Xmx384M                                              | 设置JVM可以扩展的最大堆(heap)内存大小
调试安全 | -Djava.security.debug=all                | 打开所有有关安全的调试输出
调试           | -enableassertions                                 | 允许声明检查(给开发人员调试代码用的)
调试           | -verbose:class                                        | 允许类加载的详细调试输出
调试           | -verbose:gc                                             | 允许垃圾回收器的调试输出
图像           | -Djava.awt.headless=true                 | 允许JVM运行在在没有安装图像显示软件的情况下
本地化       | -Duser.language=en                            | 设置Tomcat用户的语言包
本地化       | -Dfile.encoding=UTF-8                      | 设置Tomcat用户的默认文件编码
网络           | -Djava.net.preferIPv4Stack=true  | 让JVM用IPv4代替IPv6,Tomcat在FreeBSD系统下需要设置该参数

linux内核-服务器-x86_64,一些参数记录

总忘总查,查完还忘。。。。特此记录- -!
General setup:
Auditing support: 对于像SELinux一类的审计系统所依赖。
Choose SLAB allocator: SLAB 默认,SLUB非队列的内存分配器

Enable the block layer:
Anticipatory I/O scheduler: 针对于低速磁盘优化,适合web等对磁盘性能要求不高的服务。
Deadline I/O scheduler: 对io的最小处理时间进行排序,适合DB。
CFQ I/O scheduler: 轮循的io调度算法。
No-op: FIFO

Processor type and features:
Tickless System: 当CPU处于空闲时,降低内核定时器的轮询频率。
High Resolution Timer Support: 高分辨率定时器支持。
Supported processor vendors: 选择支持的CPU vendors。
Machine Check / overheating reporting: 选择对应的CPU
Numa Memory Allocation and Scheduler Support:新的内存访问技术,如果是Nehalem处理器,可以考虑选中。
kexec system call:可以不必重启而切换到另一个内核
kernel crash dumps: 内核crash的时候下蛋。
Build a relocatable kernel: 一个应用案例是,当kernel panic时,kexec恢复内核必须存在于另外一个物理地址而非主kernel时。
Compat VDSO support:兼容老的glibc2.3以前的版本。

Power management and ACPI options:
Suspend to RAM and standby: 待机。
Hibernation (aka ‘suspend to disk’): 磁盘休眠。
CPU Frequency scaling:
‘powersave’ governor: 省电模式。
‘userspace’ governor for userspace frequency scaling: 用户空间调CPU频率
‘ondemand’ cpufreq policy governor: 自动调整。
‘conservative’ cpufreq governor: 与自动调整相似。

Bus options (PCI etc.):
PCCard (PCMCIA/CardBus) support: 笔记本 – -!

换了个新的E5400,希望别在出现强行降到798Mhz

我的RP。。。

高性能的配置,糟糕的散热

环境: 室温26度
装备: DELL Latitude E5400
配置: Intel core duo 2 P8600, 2G DDR2, Nvidia GF9200M GS.
    最近去vs上面dota总是玩不到5分钟就卡死,CPU 100%,然后war3,vsclient,直到整个系统失去响应,被踢出平台,然后等待大概10分钟后才能恢复正常,起初怀疑驱动问题,声卡问题,未知的兼容性问题,以及我的RP问题,甚至想到由于没有在电脑旁边供个乖乖大神,或者由于上次公司小机房的乖乖大神过期忘记更换导致大神对我的惩罚- -!
    不过,今天抓到了元凶,原来这个笔记本会在GPU的温度达到67~70摄氏度的时候(此时CPU温度大概60摄氏度)强行降低CPU频率到最低的798Mhz(从bios里面关闭step speed也不管用),导致稍微运行点什么音乐,ie,就会占用100%的CPU,然后系统挂住。待GPU温度降到50度左右,才恢复正常,之后CPU恢复全速,风扇全程3900rpm/s,以下为系统挂住时的拍照,以及系统恢复正常时的抓图(点图查看原图):
点此查看原图
    系统从挂住恢复时的温度:

    GPU温度降到50度左右时的CPU频率:

    之后CPU速度恢复全速:

    曾经觉得DELL的笔记本做的应该有DELL服务器那样良好的品质和优良的设计,没想到E5400居然有这么糟糕的散热,严重怀念在80度高温下依然能够稳定让我dota的T43。

神奇的配置, smiless

请恕我无知:)

AddHandler php5-script php
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

WSGIScriptAlias /xxxxxx /xxxxxxxx.php
<Directory /xxxxxx>   
    Order allow,deny   
    Allow from all   
</Directory>

又被conntrack搞了

服务器加载了conntrack模块,结果今天服务器出现了

ping: sendmsg: Operation not permitted

检查/etc/sysctl.conf 发现已经设置了 net.ipv4.netfilter.ip_conntrack_max=655360,但是还是出现了这样的问题。

原来还需要设置一下另外的两个参数:net.nf_conntrack_max 和 net.netfilter.nf_conntrack_max

目前服务器修改后的sysctl.conf如下:

net.ipv4.ip_forward = 1

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 3

net.core.wmem_max = 8388608
net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.udp_rmem_min = 65536
net.ipv4.udp_wmem_min = 65536

net.ipv4.netfilter.ip_conntrack_max = 655360
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 21600
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 30

net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 21600

kernel.shmmax = 2147483648
kernel.shmmni = 268435456
kernel.shmall = 2147483648