滤波器有很多种设计方式。最简单的,就是用已有的buttord计算出最符合条件的巴特沃思滤波器的阶数n和截止频率,再用butter计算n阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。用freqz函数画出滤波器的幅频、相频图。用filter滤波。
例:
规定:wp为通带截止频率;ws为阻带截止频率;ap为通带最大衰减(dB);as为阻带最大衰减(dB);wc为3dB截止频率;fn为采样率;
滤波器设计条件:通带最大衰减ap=1dB,阻带最小衰减as=15dB,通带截止频率为wp=2000Hz,阻带截止频率为ws=5000Hz
代码:
fn=16000;
ap=0.1;
as=60;
wp=2000;
ws=5000; %输入滤波器条件
wpp=wp/(fn/2);wss=ws/(fn/2); %归一化;
[nwn]=buttord(wpp,wss,ap,as); %计算阶数截止频率
[ba]=butter(n,wn); %计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
freqz(b,a,512,fn);%做出H(z)的幅频、相频图
t =(1:1000)/16000;
x=cos(4000*pi*t)+cos(6000*pi*t); %输入信号
figure(2);
subplot(2,1,1);
plot(t,x); %合成信号时域波形
axis([0 0.01 -22])
X=fft(x); %进行傅里叶变换
subplot(2,1,2);
plot(abs(X));
y=filter(b,a,x); %滤波b、a滤波器系数,x滤波前序列
figure(3);
subplot(2,1,1); %
plot(t,y); %分离输出信号的时域波形
axis([0 0.01 -1.51.5]);
subplot(2,1,2);
plot(t,cos(4000*pi*t));%cos(4000*pi*t)理论时域波形
axis([0 0.01 -1.51.5])
/etc/sysctl.conf这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件。
设置Linux内核参数 /etc/sysctl.conf
1、配置 Linux 内核参数修改后不用重启动更新: /sbin/sysctl -p
2、打开/etc/sysctl.conf 复制如下内容
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
3、修改好内核以后,执行下面的命令使新的配置生效。
因为需要配置固定IP,在网上找了很久终于找到一个可行的例子,自己配置成功了。
1.首先获取你的GATEWAY
方便后面在cento系统配置里使用选取菜单栏:Edit->Virtual Network Editor
选择VMnet8,点击NAT Settings查看一下GATEWAY地址:此处的Gateway IP 为 192.168.110.2
接下来就可以进入正题了。
2.设置CentOS静态IP:
涉及到三个配置文件,分别是:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/resolv.conf
a.首先修改/etc/sysconfig/network如下:
指定网关地址。
b.然后修改/etc/sysconfig/network-scripts/ifcfg-eth0:
c.最后配置下/etc/resolv.conf:(其实这一步可以省掉,上面设置了DNS Server的地址后系统会自动修改这个配置文件。)
这样很简单几个步骤后虚拟机的IP就一直是192.168.110.129了。
固定好IP后,接下来就可以设置host
最后强调一下,这种配置方式必须要把虚拟机的配置网络连接模式改为NAT模式哦。
实现:
1.forward打开 很重要,往往忽略
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
2.防火墙配置
iptables -t nat -I PREROUTING -d 118.192.66.66/32 -p tcp -m tcp --dport 12580 -j DNAT --to-destination 192.168.32.124:12580
iptables -t nat -A POSTROUTING -s 192.168.32.0/24 -d 192.168.32.124/32 -p tcp -m tcp --dport 12580 -j SNAT --to-source 192.168.32.1
iptables -A POSTROUTING -o em1 -j MASQUERADE
A、内核参数设置
1、允许PING设置
A.临时允许PING操作的命令为:#echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
B.永久允许PING配置方法。
/etc/sysctl.conf 中增加一行
net.ipv4.icmp_echo_ignore_all=1
如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。
修改完成后执行sysctl -p使新配置生效。
2、禁止Ping设置
A.临时禁止PING的命令为:#echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
B.永久允许PING配置方法。
/etc/sysctl.conf 中增加一行
net.ipv4.icmp_echo_ignore_all=0
如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的。(0表示允许,1表示禁止)
修改完成后执行sysctl -p使新配置生效。
B、防火墙设置(注:此处的方法的前提是内核配置是默认值,也就是没有禁止Ping)
这里以Iptables防火墙为例,其他防火墙操作方法可参考防火墙的官方文档。
1、允许PING设置
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
或者也可以临时停止防火墙操作的。
service iptables stop
2、禁止PING设置
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
这是因为网络请求过多,也就导致了系统打开的文件过多。每一个连接都会当成“文件”看待的。 于是用命令 ulimit -a (效果:查看每个用户允许打开的最大文件数) 看到最大文件数是1024,将其更改大点,如 ulimit -n 4096 然后必须重启下网络服务,我用的是WebLogic,重启之后便没有出现异常。 导致 Too many open files ,网络请求过多是一种可能,但也有可能是程序上的缺陷,如没有释放一些文件句柄,程序open了文件却忘记了在最后close。但我确信工程中没有用到打开文件这一环节,因此这个可能是排除掉了。 用lsof -p [进程ID] 可以看到某ID的打开文件状况。进程ID可能用 ps -ef|grep java列出weblogic的进程ID,然后用此ID套入lsof -p ID号,咳,一大堆的请求哟,这显然是网络请求过多造成了 Too many open files。适当调整后便已消除这种现象。 相关日志 Linux下的几种桌面 Java 8 正式发布,新特性全搜罗 Facebook:Java漏洞曾使员工电脑被安装恶意软件 甲骨文发布Java紧急更新 专家称未修复漏洞 Linux下socket最大连接数 ulimit -n 最大值修改
在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:
1. lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more 在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下: 1. # lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more 2. 131 24204 3. 57 24244 4. 57 24231 5. 56 24264
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
1. ps -aef|grep 24204
2. mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令: 1. ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。(findsun提出的办法比较合理)
Too many open files经常在使用linux的时候出现,大多数情况是您的程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。
如果检查程序没有问题,那就有可能是linux默认的open files值太小,不能满足当前程序默认值的要求,比如数据库连接池的个数,tomcat请求连接的个数等。。。
查看当前系统open files的默认值,可执行: Java代码
1. [root@pororo script]# ulimit -a
2. core file size (blocks, -c) 0
3. data seg size (kbytes, -d) unlimited 4. scheduling priority (-e) 0
5. file size (blocks, -f) unlimited 6. pending signals (-i) 128161 7. max locked memory (kbytes, -l) 32
8. max memory size (kbytes, -m) unlimited 9. open files (-n) 800000 10.pipe size (512 bytes, -p) 8
11.POSIX message queues (bytes, -q) 819200 12.real-time priority (-r) 0
13.stack size (kbytes, -s) 10240
14.cpu time (seconds, -t) unlimited 15.max user processes (-u) 128161 16.virtual memory (kbytes, -v) unlimited 17.file locks (-x) unlimited
如果发现open files项比较小,可以按如下方式更改:
1. 检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。 Java代码
1. # cat /proc/sys/fs/file-max
如果设置值太小,修改文件/etc/sysctl.conf的变量到合适的值。这样会在每次重启之后生效。 如果设置值够大,跳过这一步。
Java代码
1. # echo 2048 > /proc/sys/fs/file-max
编辑文件/etc/sysctl.conf,插入下行: Java代码
1. fs.file-max = 8192
2. 在/etc/security/limits.conf文件中设置最大打开文件数, 下面是一行提示: Java代码
1. #
添加如下这行: Java代码
1. * - nofile 8192
这行设置了每个用户的默认打开文件数为2048。 注意"nofile"项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用"-"字符设定, 则hard和soft设定会同时被设定。
硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。
当增加文件限制描述,可以简单的把当前值双倍。 例子如下, 如果你要提高默认值1024, 最好提高到2048, 如果还要继续增加, 就需要设置成4096。
最后用ulimit -a再次查看,open files的值,没什么问题的话,就已经改过来了。
Tomcat Too Many Open Files ;Too many open files tomcat 6.0报“too many open files Too many open files 问题的解决 linux 故障解决,tomcat 故障处理,too many open files 故障处理
发表于 2011 年 01 月 06 日 由 admin
Tomcat Too Many Open Files ;Too many open files tomcat 6.0报“too many open files Too many open files 问题的解决
linux 故障解决,tomcat 故障处理,too many open files 故障处理这个问题是第一次在Linux环境下碰到,把解决的方法记录下来。
服务器配置:两个双核CPU 2.0G,4G内存
操作系统:CentOS,内核2.6.18
应用1、搜索服务器,负责全站的搜索和提供内容相关性接口
应用服务器:Tomcat6.0.16+Apache2.2.8,其中两个Tomcat实例,一个对外提供服务,一个对内管理索引(创建、删除、检索等)
Web方案:Solr1.3(With Solr Client For Java)、Java Servlet(Web Service 接口)
应用2、类似于百度知道的一个应用
应用服务器:与搜索服务器共享Apache2.2.8
Web方案:Php+Mysql
问题症状:搜索服务停止,应用2响应超时,牵连全站的搜索接口调用内容的输出,查看Catalina日志,大量的如下信息:
Java代码
org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:295)
at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:641)
at org.apache.jk.common.SocketAcceptor.runIt(ChannelSocket.java:852)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:295)
at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:641)
at org.apache.jk.common.SocketAcceptor.runIt(ChannelSocket.java:852)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
事件的主题:linux系统出现Too many open files 错误,这是因为文件描述符大小不够,或者有不正常的网络连接(Socket也是一种特殊的文件)、文件IO没有关闭并释放出文件描述符(文件句柄,File Operator)。
使用如下命令查看系统对允许打开最大文件描述符的配置:
ulimit -u 查看open files设置
ulimit -a 查看所有设置
ulimit -u 65535(新的open files 值)修改设置
ulimit -n 65536 设置用户可以同时打开的最大文件数(max open files)
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
使用lsof -p pid [httpd进程的 pid、java的pid]来查看系统中apache进程和java运行时进程当前打开的文件资源,发现两者之和已经接近1024,大于了默认的设置。
修改配置:
修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536
系统级文件描述符极限还可以通过将以下三行添加到 /etc/rc.d/rc.local 启动脚本中来设置:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max
思考:虽 然调整该参数解决了当前的问题,但并不是最好的方法,出现该错误说明该服务器承载了一定的并发连接,尤其是搜索服务,其中一个实例对外提供搜索,另一个实 例创建索引,两个实例之间也使用socket进行通信(httpclient for java),创建索引的时候会占用大量的文件描述符,如果描述符没有及时释放(不能完全依赖垃圾回收机制,要及时的close);全站的所有与搜索有关的 接口调用都会向其发出请求,而应用2也对外服务不少的请求,较好的办法是将搜索服务从该服务器中分离出来,这样可以分别对两者进行优化(包括调整 Linux系统参数,比如:/etc/sysctl.conf中对net.ipv4的优化),出了问题也容易debug
由于设置了PPPOE Server,导致自己的系统能连接上WIFI却无法上网。然后发现问题出在 /etc/resolv.conf 文件上。修改后PPPOE Servernameserver 8.8.8.8nameserver 8.8.8.8导致和TUD的路由器的NS 不一致,所以无法上网。最后修改为#/etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 127.0.1.1search mshome.net dip.tu-dresden.de就可以正常上网了。 Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的"ubuntu"一词,意思是"人性"、"我的存在是因为大家的存在",是非洲传统的一种价值观,类似华人社会的"仁爱"思想。Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。2013年1月3日,Ubuntu正式发布面向智能手机的移动操作系统。 ubuntu基于linux的免费开源桌面PC操作系统,十分契合英特尔的超极本定位,支持x86、64位和ppc架构。 2014年2月20日,Canonical公司于北京中关村皇冠假日酒店召开了Ubuntu智能手机发布会,正式宣布Ubuntu与国产手机厂商魅族合作推出Ubuntu版MX3。魅族副总裁李楠到场出席。
检查网络配置命令:ifconfig
sudo vi /etc/resolv.conf 编辑网关
sudo /etc/init.d/networking stop
sudo /etc/init.d/networking start 重启网络
sudo /etc/init.d/networking restart 重启网络
ubuntu server 14.04设置IP和DNS
设置IP:
sudo vim /etc/network/interfaces
将以下内容:
auto eth0
iface eth0 inet dhcp
修改为:
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
把xxx.xxx.xxx设置为你要个性的信息既可,其中
auto eth0 #开机自动连接网络
iface eth0 inet static #static表示使用固定ip,dhcp表述使用动态ip
address 是本机IP地址
netmask 子网掩码
gateway 网关
设置DNS
linux系统的DNS信息是保存在/etc/resolv.conf , 但是在ubuntu中用vim打开这个文件你会发现有如下文字的提示
DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
所以不能直接个性这个文件,这个内容可能会被覆盖
在ubuntu中dns信息是放在/etc/resolvconf/resolv.conf.d/目录下
一般情况下这个目录下有base和head两个文件夹
vim /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.8.8
nameserver 114.114.114.114
保存后执行
resolvconf -u
用以下命令使网络设置生效
sudo /etc/init.d/networking restart
第一个选项:当所有 Vuser 中的 X% 到达集合点时释放 Vuser(注意,一般不选择第一个策略,如果选择此选项,场景将不按计划运行) 第二个选项:仅当场景中正在运行的指定百分比用户到达集合点后才释放 Vuser。 第三个选项:场景中正在运行的用户的50%到达集合点后,才释放 Vuser,并继续执行场景。 最后一个选项指:在“Vuser 之间的超时值”框中输入一个超时值。每个 Vuser 到达集合点之后,LoadRunner 都会等待下一个 Vuser 到达,等待的最长时间为您设置的超时间隔。如果下一个 Vuser 在超时间隔内还没到达,Controller 就会从集合中释放所有的 Vuser。
1、Centos系统如果要检查系统更新的话,直接输入 yum update命令即可啦
2、安装系统更新补丁
通过命令检查连接yum服务器之后可以看到当前系统需要更新的补丁,安装输入y即可
3、查看系统更新的版本
如果要查看当前系统更新到什么版本了,可以通过输入 yum info updates即可查看每个版本或软件的版本号等
具体里面有教程可以进去看看。
IPSEC的安装,看如下:
连接互联网我,,用YUM下载
安装相应 ipsec 套件工具和基础软件环境
#yum -y install gmp gmp-devel gawk flex bison
配置环境变量
#sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print $1"= 0"}'
执行上面的命令,把结果添加到/etc/ sysctl.conf的结尾。
并且把
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
修改成
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
保存后,执行sysctl -p,使其修改后的参数生效。
# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.conf.bond1.send_redirects = 0
net.ipv4.conf.bond1.accept_redirects = 0
net.ipv4.conf.bond0.send_redirects = 0
net.ipv4.conf.bond0.accept_redirects = 0
net.ipv4.conf.eth4.send_redirects = 0
随着企业用户量的增大,单台服务器已难以承受高并发流量的冲击,此时部署负载均衡是必须的,它帮助企业达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。可以说,现在负载均衡已经成为了平台级的服务,几乎所有的云服务提供商都提供负载均衡服务。那么,流媒体服务器如何实现负载均衡? 图源:百度百科
你上面说到的这些服务器只有Web服务器需要做负载均衡,而且一般都是前置机才做负载均衡,做服务器负载均衡的条件是:
1. 你要有提供相同应用的多台Web服务器。
2. 要有负载均衡的设备(可以是软件也可以是硬件)。
3. 要为这个服务分配一个虚拟地址(作为服务访问的统一入口)和若干真实地址(有几台Web服务器需要几个真实地址)。
注:一般建议采用硬件设备,通常需要做负载均衡的应用说明他的负载很大,专用的硬件比较可靠。
具备以上条件后将Web服务器连接到负载均衡设备上,在负载均衡设备上配置虚拟地址和真实地址、配置负载均衡算法,配置负载均衡策略,将负载均衡设备接入网络。
这样,外面的用户只需要访问这个虚拟地址就可以了,负载均衡设备收到请求后会按照负载均衡策略和算法把请求分配到真实地址上,实现负载功能。
以上所说只是负载均衡的一种部署方式,根据实际需要选择单臂、双臂接入网络;根据应用的特点选择健康检查的方式;根据应用选择是否使用回话保持算法等。