- 浏览: 264573 次
- 性别:
- 来自: 北京
-
最新评论
-
hzbook:
Devin.Chenzx 写道书中的源代码 和网址现在不能访问 ...
软件管道规则 -
Devin.Chenzx:
书中的源代码 和网址现在不能访问!你们那里有备份么?
软件管道规则 -
hzbook:
fxllong123456 写道加入了Ext4.0的新特性? ...
ExtJS Web应用程序开发指南(第2版)(针对Ext JS 4.0更新) -
fxllong123456:
加入了Ext4.0的新特性? 在哪里能买到啊
ExtJS Web应用程序开发指南(第2版)(针对Ext JS 4.0更新) -
gundumw100:
感觉这本书<Android应用开发揭秘>很垃圾的. ...
移动开发参考书之Android篇
Linux服务器的优化
服务器的优化是我们最小化安装系统时应该做的事情。其实,在做这项工作之前,我们就应该根据实际应用需求来选购Linux服务器,然后有所偏重地选择硬件,比如我们应该根据服务器的应用来确定是需要RAID5,还是单块硬盘等。
1.5.1 根据服务器应用来选购服务器
无论是租用服务器还是托管都要面临一个问题,那就是选择服务器的硬件配置。前面也说了,选购硬件配置时要根据我们的服务器应用需求而定。因为你无法 通过一台服务器来满足所有的需求、解决所有的问题。在项目实施或网站架构之前,我们应该从以下几方面来考虑如何选购Linux服务器:
- 服务器运行的应用
- 需要支持的用户访问量
- 需要的存储数据空间
- 业务的重要性
- 服务器网卡方面的考虑
- 安全方面的考虑
- 机架合理化安排
- 服务器的价格预算
- 下面分别来看一下。
1.服务器运行的应用
这是首先需要考虑的问题,我们通常要根据服务器的应用类型(也就是用途)来决定服务器的性能、容量和可靠性需求。下面将按照负载均衡、缓存服务器、前端服务器、应用程序服务器、数据服务器的常见基础架构来讨论。
- 负载均衡:它对服务器的要求非常低,尤其是用来做LVS负载时,它会直接将所有的连接要求转给后端的Web应用。所以,在保证网卡性能的前提下(很多时候我用的是品牌服务器自带的百兆网卡),可以将性能相对较差的配置用作负载均衡。
- 缓存服务器:主要是squid或varnish等,需要重点考虑两方面的因素,即内存尽量多些,硬盘尽量快些,不要因为硬盘的I/O影响了整体性能。
- Web前端服务器:正常情况下,大多数Web前端服务器(Front-end)对服务器的要求不高,例如静态Web服务器、动态服务器、图片 服务器等。事实上现在很流行在一台性能卓越的服务器上同时运行Web前端+应用服务器,比如Nginx+PHP-FPM、Nginx+Tomcat或 Nginx+Resin。
- 应用程序服务器:由于它承担了计算和功能实现的重任,我们需要为基于Web架构的应用程序服务器(Application Server)选择足够快的服务器。另外应用程序服务器可能需要用到大量的内存,尤其是基于Windows基础架构的Ruby、Python、Java服 务器,这一类服务器至少需要使用单路至强的配置。至于可靠性的问题,如果你的架构中只有一台应用服务器,那这台服务器需要足够可靠,RAID是绝对不能忽 视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机制、具有冗余功能,那就不必过于担心了。
- 特殊的应用:除了用于Web架构中的应用程序之外,如果你的服务器还要处理流媒体视频编码、服务器虚拟化、媒体服务器(Asterisk之 类),或者作为游戏服务器(逻辑、地图、聊天)运行,那同样会对CPU和内存的需求比较高,至少也要考虑单路至强的服务器。其中,服务器虚拟化对存储可靠 性的要求非常高,因为一个篮子里有十几个鸡蛋,篮子一定要足够牢靠才行。
- 公共服务:这里指的是邮件服务器、文件服务器、DNS服务器、域控服务器等。通常我们会部署两台DNS服务器互相备份,域控主服务器也会拥有 一台备份服务器(专用的或非专用的),所以对于可靠性无须过于苛刻。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是对邮件数据负责, 因为很多用户没有保存和归档邮件数据的习惯,待其重装系统后,就会习惯性地到服务器上重新下载相应的数据。至于性能问题,则应评估用户数量后再决定。另 外,考虑到它的重要性,建议还要尽量选择稳定的服务器系统,比如Linux或BSD系列。
- 数据库:这是我们最后讨论的应用,对服务器的要求也是最高、最重要的。无论你使用的是MySQL、SQL Server还是Oracle,一般情况下,它都需要有足够快的CPU、足够大的内存、足够稳定可靠的硬件。可直接采用Dell PowerEdge R710或HP 580G5,CPU和内存也要尽可能最大化。如果预算充分,建议用固态硬盘作为RAID10,因为数据库服务器对硬盘的I/O要求是最高的。
2.服务器需要支持的用户访问量
服务器就是为了给用户提供某种服务的,所以使用这些服务的用户同样是我们必须考虑的因素。我们可以从下面几个具体的问题进行评估:
有多少注册用户?正常情况下有多少用户会同时在线访问?每天同时在线访问的最高峰值大概是多少?
一般在项目实施之前,客户方面会针对这些问题给出一个大致的结果。但我们要尽量设计得比这更充分和具体。同时,我们还要对未来的用户增长做一个尽可能准确的预测和规划,因为你的服务器可能会支持越来越多的用户,所以在进行网站或系统架构时要让机器能灵活地扩展。
3.需要的存储数据空间
关于这个问题需要从两个方面来考虑,一方面是有哪些类别的数据,包括:操作系统本身占用的空间,安装应用程序所需要的空间,应用程序所产生的数据、 数据库、日志文件、邮件数据等,如果网站是Web 2.0的,还要计算每个用户的存储空间;另一方面是从时间轴上来考虑,这些数据每天都在增长,你至少要为未来1年(我们建议2~3年)的数据增长做个准确 的测算,这就需要软件开发人员和业务人员一起来提供足够的信息了。最后可将计算出来的结果乘上1.5左右的系数,方便维护的时候做各种数据的备份和文件转 移操作。
4.业务的重要性
关于这个问题就需要根据自身的业务领域来考虑相关要求了。下面举几个简单的例子,帮助你了解这些服务器对可靠性、数据完整性等方面的要求。
- 如果你的服务器是用来运行一个WordPress博客、与朋友们分享观点的,那么,一台酷睿服务器、1GB的内存外加一块160GB的硬盘就足够了。就算服务器出现了一点硬件故障,导致几个小时甚至一两天不能提供访问,生活会照常继续,天也不会塌下来。
- 如果你的服务器是用作测试平台的,那么就不会像生产环境那样对可靠性有极高的要求,你所需要的可能只是做好例行的数据备份,若服务器宕机,只要能在当天把问题解决就行了。
- 如果是一个电子商务公司的服务器,运行着电子商务网站平台,那么请一定要十分重视服务器。当硬件发生故障而导致宕机时,你需要对以下“危言耸 听”的后果做好心理准备:投诉电话被打爆、顾客大量流失、顾客要求退款、市场推广费用打水漂、员工无事可干、公司运营陷入瘫痪状态、数据丢失等。事实上, 电子商务网站一般是需要365×24小时不间断监控的,而且要有专人轮流值守,并且要有足够的备份设备,每天还要有专人检查。个人感觉,在网站运维方面, 电子商务的技术含量也是最高的。
- 如果是大型广告类或门户类网站,那么建议选择CDN系统。由于它有提高网站响应速度、负载均衡、有效抵御DDoS攻击等特点,相对而言,每节点都会有大量的冗余,所以,除了成本之外,CDN机器的硬盘问题不大。
这里其实只是简单地讨论了业务对服务器硬件可靠性的要求。换言之,如果你觉得业务不能承担硬盘损坏带来的停机或数据丢失风险,那么一定要选择一个合 适的RAID卡。对于冗余电源问题,道理是一样的(要全面解决这个问题,不能只考虑单个服务器的硬件,还需要结合系统架构的规划设计)。
在回答了以上问题后,接下来就可以决定下面这些具体选项了:
(1)选择什么CPU
回忆一下上面关于“服务器运行的应用”和“需要支持的用户访问量”两个方面的考虑,这将帮助我们选择合适的CPU。毫无疑问,CPU的主频越高,其性能也 就越高;两个CPU要比一个CPU来得更爽,至强肯定比酷睿更猛。但究竟怎样的CPU才是合适的呢?下面为你提供一些常见情况下的建议:
- 如果你的业务刚刚起步,预算不是很充足,建议你选择一款经典的酷睿服务器,这可以帮你节约大量成本。而且,以后可以根据业务发展的情况,随时升级到更高配置的服务器。
- 如果你需要在一台服务器上同时运行多种应用服务,例如.Net+Exchange+SQL Server,那么一个单核至强(例如X3330)或新一代的酷睿I3/I5(双核四线程)将是最佳的选择。虽然从技术的角度来说,这不是一个好主意,但 至少能够帮你节约一大笔成本。
- 如果你的服务器要运行SQL Server、MySQL或Oracle,而且目前有几百个用户同时在线,未来还会不断增长,那么你至少应该选择安装一个双四核服务器。
- 如果需要的是Web应用服务器,双四核基本就可以满足我们的要求了。
(2)需要多大的内存
同样,“服务器运行的应用”和“需要支持的用户访问量”两方面的考虑也将帮助我们选择合适的内存容量。相比于CPU,我认为内存(RAM)才是影响 性能的最关键因素。因为在相当多正在运行的服务器中,CPU的利用率一般都在10%~30%之间,甚至更低。但我们发现由于内存容量不够而导致服务器运行 缓慢的案例比比皆是,如果服务器不能分配足够的内存给应用程序,应用程序就需要通过硬盘接口缓慢地交换读写数据了,这将导致网站慢得令人无法接受。内存的 大小主要取决于服务器的用户数量,当然也和应用软件对内存的最低需求及内存管理机制有关,所以,最好由程序员或软件开发商给出最佳的内存配置建议。下面同 样给出了一些常见应用环境下的内存配置建议:
- 无论是Windows下的IIS还是Linux下的Apache,一般情况下Web前端服务器不需要配置特别高的内存,尤其是在集群架构中,4GB的内存就已经足够了。如果有几千个并发用户,而且他们同时运行动态脚本程序,我们才会考虑使用8GB或更高的内存。
- 对于运行Tomcat、Resin、WebLogic、Websphere或.NET的应用服务器,4GB内存应该是基准配置,更准确的数字需要根据用户数量和技术架构来确定。
- 数据库服务器的内存由数据库实例的数量、表大小、索引、用户数来决定,一般建议配置4GB以上的内存,我们在许多项目方案中使用了24GB~48GB的内存。
- 诸如Postfix、Notes、Exchange这样的邮件服务器对内存的要求并不高,1GB~2GB就可以满足了。
- 还有一些特殊的服务器,我们需要为之配置尽可能高的内存容量,包括Squid、Varnish、Memcached的缓存服务器。
- 对于一台文件服务器,1GB内存可能就足够了。
事实上,上面的数字已经足够“慷慨”,由于内存技术在不断进化,价格也在不断降低,我们才得以近乎奢侈地讨论4GB、8GB、16GB这些曾经不可想象的内存容量。然而,除了花钱购买内存来满足应用程序的“贪婪”之外,系统优化和数据库优化仍然是我们需要重视的问题。
(3)需要怎样的硬盘存储系统
硬盘存储系统的选择和配置是整个服务器系统里最复杂的一部分,我们需要考虑硬盘的数量、容量、接口类型、转速、缓存大小,以及是否需要RAID卡、 RAID卡的型号和RAID级别等问题。甚至在一些高可靠性、高性能的应用环境中,我们还需要考虑使用怎样的外部存储系统(SAN、NAS或DAS)。下 面将服务器的硬盘RAID卡的特点归纳一下:
- 如果是用作缓存服务器,比如squid、varnish还有memcached,可以考虑用RAID0。
- 如果是运行Nginx+PHP5或tomcat、resin等应用,可以考虑用RAID1。
- 如是是内网开发服务器或存放重要代码的服务器,可以考虑用RAID5。
- 如果是运行MySQL或Oracle等数据库应用,可以考虑用固态硬盘做RAID5或RAID10。
5.网卡性能与数据方面的考虑
如果你的基础架构是多服务器环境,而且服务器之间有大量的数据交换,那么建议你为每台服务器配置两个或更多的网卡,一个用来对外提供服务,另一个用 来做内部数据交换。由于现在项目外端都置于防火墙内,所以许多时候单网卡就足够了;而像LVS+Keepalived这种只用公网地址的Linux集群架 构,有时可能仅仅需要一块网卡。目前,HP或Dell这种品牌服务器自带的网卡已经足够使用了。
另外,数据的备份也是很重要的。在实际工作中我们也发现,rsync和scp这些Liunx下的备份工具同样非常占带宽,所以,如果用scp,建议尽量用它的限速参数;而rsync则尽量选择在非业务时间段执行。
6.服务器安全方面的考虑
由于目前国内的DDoS攻击还是比较普遍,建议给每个项目方案和自己的电子商务网站配备硬件防火墙,比如Juniper、Cisco或神盾等。当然 了,这个问题也是网站后期运营维护需要考虑的,这里只是想让大家有个概念性的认识。有时为了数据的安全,我会让所有的机器都用RAID5。另外就是定期巡 视机房,检查服务器的硬盘灯指向,一有异常就迅速处理。
7.根据机架数合理安排服务器的数量
这个问题应该在项目实施前就准备好,选择服务器时应该明确1U、2U和4U到底有多少台,应该如何安排。在小项目中这个问题可能无关紧要,但在大型项目的实施过程中,这个问题就很突出了,我们应该根据现有或额定的机架数目确定到底应该选择多少个服务器。
8.成本考虑:服务器的价格问题
这个问题无论是在替公司采购时,还是在项目实施过程中,都是重要的问题。我们的方案经常被退回,理由就是超出预算。尤其是一些小项目,预算更吃紧。 我做项目时经常面临的一种需求是客户做的是证券类资讯网站,只要求周一至周五的上午9点至下午3点网站不出问题即可,并不想做复杂的负载均衡高可用。所以 这时候,我会做成单Nginx或Haproxy,后面接两台Web应用。这种情况还好说,如果是做中大型电子商务网站,在服务器成本上的控制就尤其重要。 事实上,我们经常遇到的问题是,客户给出的成本预算有限,而我们的应用又需要更多的服务器。这时候,我们不得不选择Centos或FreeBSD下的免费 虚拟化软件,这将在后面的章节中重点讲述。
以上8个方面即是我们在采购服务器时应该注意的因素,在选择服务器的组件时要有所偏重,然后根据系统或网站架构来决定服务器的数量,尽量做到服务器资源利用的最大化。
1.5.2 Centos5.5最小化安装后的优化
购买了服务器(现在主流配置都是双四核),下一步就要安装系统了。这里推荐用64位的Centos5.5,安装系统时我们要选择最小化安装(不要图 形)。大家在用服务器时要记得一个原则,系统的安装包越少越好,这样机器才会更稳定。前面已经介绍过线上服务器的分区流程,如果遇到对磁盘I/O调用频繁 的服务(例如MySQL),我们可以单独拿一个分区(如/data)出来,不要跟/装在一起,避免/分区被频繁调用,出现I/O瓶颈。至于单服务器的性能 调优,本着稳定安全的原则,尽量不要改动系统原有的配置(Centos自身的文件和内存机制就很优秀),尤其是线上环境,稳定性要放在第一位来考虑。
1.关闭不需要的服务
众知周知,服务越少,系统占用的资源也会越少,所以应关闭不需要的服务。这样做的好处是减少内存和CPU时间的占用。命令如下所示:# ntsysv下面列出需要启动的服务,未列出的服务一律关闭。
- crond
Linux下的时间计划任务服务。- irqbalance
启用irqbalance服务,既可以提升性能,又可以降低能耗。irqbalance用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系 统负载状况将工作置于Performance mode或Power-save mode状态。处于Performance mode时,irqbalance会将中断尽可能均匀地分发给各个CPU core,以充分利用CPU的多核,提升性能。处于Power-save mode时,irqbalance会将中断集中分配给第一个CPU,以保证其他空闲CPU的睡眠时间,降低能耗。现在的主流服务器都是双四核,所以这项我 建议保留。- network
- sshd
- syslog
这是Linux的日志系统,必须要启动,否则机器出现问题时会找不到原因。
再说一下两个比较特殊的服务,它们是iptables和SELinux。因为网站和系统之前均有硬件防火墙,如果没有特殊需求的话,均可选择关闭。要关闭它们可以在命令setup下操作,也可以使用命令行操作。
关闭iptables的代码如下:service iptables stop && #chkconfig iptables off关闭SELinux的方法如下:vim /etc/selinux/config然后将文件中的selinux=""改为disabled,并重启。如果不想重启系统,使用命令 setenforce 0,此命令可以暂时关闭SELinux,重启后失效。
说明 setenforce 1将SELinux设置成为enforcing模式;setenforce 0将SELinux设置成为permissive模式。
另外,在lilo或grub的启动参数中增加:selinux=0,这样也可以关闭SELinux。
2.关闭不需要的tty
先编辑/etc/inittab,找到如下一段命令:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
这段命令会使init为你打开了6个控制台,分别可以用[ALT+F1]到[ALT+F6]进行访问。此6个控制台默认都驻留在内存中,用ps -aux这个命令就可以看到,这是6个进程,如下所示:
[root@localhost ~]# ps -aux| grep tty
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root 3219 0.0 0.0 3792 488 tty1 Ss+ Mar16 0:00 /sbin/mingetty tty1
root 3220 0.0 0.0 3792 484 tty2 Ss+ Mar16 0:00 /sbin/mingetty tty2
root 3221 0.0 0.0 3792 488 tty3 Ss+ Mar16 0:00 /sbin/mingetty tty3
root 3222 0.0 0.0 3792 488 tty4 Ss+ Mar16 0:00 /sbin/mingetty tty4
root 3224 0.0 0.0 3792 488 tty5 Ss+ Mar16 0:00 /sbin/mingetty tty5
root 3226 0.0 0.0 3792 488 tty6 Ss+ Mar16 0:00 /sbin/mingetty tty6
root 3325 0.0 0.1 90548 6264 tty7 Ss+ Mar16 0:01 /usr/bin/Xorg :0 -br -audit 0 -auth /var/gdm/:0.Xauth -nolisten tcp vt7
root 6767 0.0 0.0 68284 1564 tty8 Ss+ Mar17 0:00 /bin/bash
root 31179 0.0 0.0 63372 756 pts/2 S+ 17:03 0:00 grep tty
事实上没有必要使用这么多。应如何关闭不需要的进程呢?通常我们保留前两个控制台就可以了,把后面4个用#注释掉,并且无需重启,只需要执行init q这个命令即可,如下所示:
init q
3.对TCP/IP网络参数进行调整
调整TCP/IP网络参数,可以增强抗SYN Flood的能力,命令如下所示:
# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
# sysctl -p
4.修改shell命令的history记录个数
修改history记录的命令如下所示:
# vi /etc/profile
找到histsize=1000,将其改为histsize=100(这条可根据实际情况而定)。
不重启系统就可让其生效,如下所示:
source /etc/profile
5.定时校正服务器的时间
我们可以定时校正服务器的时间,命令如下所示:
# yum install ntp
# crontab -e
加入如下一行:
*/5 * * * * ntpdate ntp.api.bz
#ntp.api.bz是一组NTP服务器集群,目前有6台服务器。这项服务是api.bz继http://sms.api.bz移动飞信免费短信发送接口之后的第二项免费API服务。
6.停止打印服务
如果不准备提供打印服务,可停止默认设置为自动启动的打印服务,命令如下所示:
[root@sample ~]#/etc/rc.d/init.d/cups stop ← 停止打印服务Stopping cups: [OK] ← 停止服务成功,出现“OK”
[root@sample ~]#chkconfig cups off ← 禁止打印服务自动启动
[root@sample ~]#chkconfig -list cups ← 确认打印服务自启动设置状态
cups0:off 1:off 2:off 3:off 4:off 5:off 6:off ← 0~6都为off的状态就OK(当前打印服务自启动被禁止)
7.停止ipv6
在Centos5.5默认的状态下,ipv6是被启用的。因为我们不使用ipv6,所以,可以停止ipv6,以最大限度地保证安全和快速。首先确认一下ipv6是不是处于被启动的状态。[root@sample ~]#ifconfig -a ← 列出全部网络接口信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame.:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)
Interrupt:185 Base address:0×1400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame.:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)
sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame.:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
然后修改相应配置文件,停止ipv6,如下所示:
[root@sample ~]#vi /etc/modprobe.conf ← 修改相应配置文件,添加如下内容
alias net-pf-10 off
alias ipv6 off
echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@sample ~]#shutdown -r now ← 重新启动系统,使设置生效
最后确认ipv6的功能已经被关闭,如下所示:
[root@sample ~]#ifconfig -a ← 列出全部网络接口信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame.:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)
Interrupt:185 Base address:0×1400lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame.:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)
确认ipv6的相关信息没有被列出,说明ipv6功能已经关闭。
8.调整Linux的最大文件打开数
要调整一下Linux的最大文件打开数,否则squid在高负载时执行性能将会很低。另外,在Linux下面部署应用时,有时候会遇上
Socket/File:Can’t open so many
files这样的问题,这个值也会影响服务器的最大并发数。其实Linux是有文件句柄限制的,但默认不是很高,一般是1024,生产服务器很容易就会达
到这个值,所以需要改动此值。刚开始我采用vim/etc/security/limit.conf命令,在最后一行添加如下代码:
* soft nofile 60000
* hard nofile 65535
但重启后一切都还原了。
正解做法应该为在Centos5.5的/etc/rc.local文件里添加如下命令行:
ulimit -SHn 65535
当然了,我们也可以在Nginx的一些监控脚本里实时添加此命令行,达到重启也能生效的目的。
另外,ulimit -n命令并不能真正看到文件的最大文件打开数,大家可用如下脚本查看:
#!/bin/bash
for pid in 'ps aux |grep nginx |grep -v grep|awk '{print$2}''
do
cat /proc/${pid}/limits |grep 'Max open files'
done
9.启动网卡
大家配置Centos5.5的网卡时,容易忽略的一项就是Linux启动时未启动网卡,其后果很明显,那就是你的Linux机器永远也没有IP地址,下面是一台线上服务器的配置:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:14:22:1B:71:20
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes →此项一定要记得为yes,它会在系统引导就启动你的网卡设备
NETMASK=255.255.255.192
IPADDR=203.93.236.146
GATEWAY=203.93.236.129
TYPE=Ethernet
PEERDNS=yes →允许从DHCP处获得的DNS覆盖本地的DNS
USERCTL=no~ →不允许普通用户修改网卡
10.关闭Centos5.5的写磁盘I/O功能
一个Linux文件默认有3个时间。
- atime:对此文件的访问时间。
- ctime:此文件inode发生变化的时间。
- mtime:此文件的修改时间。
如果有多个小文件(比如Web服务器的页面上有多个小图片),通常就没有必要记录文件的访问时间了,这样可以减少写磁盘的I/O。这要如何配置呢?
首先,修改文件系统的配置文件:vim /etc/fstab。然后,在包含大量小文件的分区中使用noatime和nodiratime这两个命 令。例如:/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0这样文件被访问时就不会再产生写磁盘的I/O了。
1.5.3 优化Linux下的内核TCP参数以提高系统性能
内核的优化跟服务器的优化一样,应本着稳定安全的原则。下面以64位的Centos5.5下的Squid服务器为例来说明,待客户端与服务器端建立 TCP/IP连接后就会关闭SOCKET,服务器端连接的端口状态也就变为TIME_WAIT了。那是不是所有执行主动关闭的SOCKET都会进入 TIME_WAIT状态呢?有没有什么情况使主动关闭的SOCKET直接进入CLOSED状态呢?答案是主动关闭的一方在发送最后一个ACK后就会进入 TIME_WAIT状态,并停留2MSL(Max Segment LifeTime)时间,这个是TCP/IP必不可少的,也就是“解决”不了的。
TCP/IP的设计者如此设计,主要原因有两个:
- 防止上一次连接中的包迷路后重新出现,影响新的连接(经过2MSL时间后,上一次连接中所有重复的包都会消失)。
- 为了可靠地关闭TCP连接。主动关闭方发送的最后一个ACK(FIN)有可能会丢失,如果丢失,被动方会重新发FIN,这时如果主动方处于 CLOSED状态,就会响应RST而不是ACK。所以主动方要处于TIME_WAIT状态,而不能是CLOSED状态。另外,TIME_WAIT并不会占 用很大的资源,除非受到攻击。
在Squid服务器中可输入查看当前连接统计数的命令,如下所示:
netstat -n| awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 14
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18122
- CLOSED:无连接是活动的或正在进行中的。
- LISTEN:服务器在等待进入呼叫。
- SYN_RECV:一个连接请求已经到达,等待确认。
- SYN_SENT:应用已经开始,打开一个连接。
- ESTABLISHED:正常数据传输状态。
- FIN_WAIT1:应用说它已经完成。
- FIN_WAIT2:另一边已同意释放。
- CLOSING:两边同时尝试关闭。
- TIME_WAIT:另一边已初始化一个释放。
- LAST_ACK:等待所有分组死掉。
也就是说,这条命令可以把当前系统的网络连接状态分类汇总。
在Linux下高并发的Squid服务器中,TCP TIME_WAIT套接字数量经常可达两三万,服务器很容易就会被拖死。不过,我们可以通过修改Linux内核参数来减少Squid服务器的TIME_WAIT套接字数量,命令如下所示:
vim /etc/sysctl.conf
然后,增加以下参数:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
其中:
- net.ipv4.tcp_syncookies=1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击。默认为0,表示关闭。
- net.ipv4.tcp_tw_reuse=1表示开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接。默认为0,表示关闭。
- net.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAIT套接字的快速回收。默认为0,表示关闭。
- net.ipv4.tcp_fin_timeout=30表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
- net.ipv4.tcp_keepalive_time=1200表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,这里改为20分钟。
- net.ipv4.ip_local_port_range=1024 65000表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000。
- net.ipv4.tcp_max_syn_backlog=8192表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
- net.ipv4.tcp_max_tw_buckets=5000表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数
字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,前面介绍的几个参
数已经可以很好地减少TIME_WAIT套接字数量,但是对于Squid来说,效果却不大。有了此参数就可以控制TIME_WAIT套接字的最大数量,避
免Squid服务器被大量的TIME_WAIT套接字拖死。
执行以下命令使内核配置立即生效:
/sbin/sysctl -p
如果是用于Apache或Nginx等的Web服务器,或Nginx的反向代理,则只需要更改以下几项即可:
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000执行以下命令使内核配置立即生效: /sbin/sysctl -p如果是邮件服务器,则建议内核方案如下:net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
kernel.shmmax = 134217728
执行以下命令使内核配置立即生效:
/sbin/sysctl -p
当然这些都只是最基本的更改,大家还可以根据自己的需求来更改内核的设置,同样也要本着稳定的原则,如果服务器不稳定的话,一切工作和努力都会白 费。如果以上优化仍无法满足你的要求,有可能你需要定制你的服务器内核或升级服务器硬件。至于服务的配置优化,超出了本章的内容,大家可根据自己的需求有 针对性地进行更改。
1.5.4 生产服务器应尽量选择编译安装软件包
建议在安装线上的生产服务器软件包时都用源码安装,这是因为源码安装可以自行调整编译参数,最大化地定制安装结果。这里以MySQL 5线上环境的编译安装来说明之,其编译参数如下所示:
./configure -prefix=/usr/local/mysql
-without-debug -without-bench -enable-thread-safe-client
-enable-assembler -enable-profiling -with-mysqld-ldflags=-all-static
-with-client-ldflags=-all-static -with-charset=latin1
-with-extra-charset=utf8,gbk -with-innodb -with-csv-storage-engine
-with-federated-storage-engine -with-mysqld-user=mysql
-without-embedded-server -with-server-suffix=-community
-with-unix-socket-path=/usr/local/mysql/sock/mysql.sock && make
&& make install
在安装MySQL时,源码安装与rpm安装相较,其特点如下:
- 我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码。
- 根据不同的软件平台环境调整相关的编译参数(源码安装不仅适用于rhel/centos,其他系统像FreeBSD、Solaris、Ubuntu等一样适用)。
- 可针对特定的应用场景选择需要什么组件或不需要什么组件。
- 同一台主机上可以安装多个MySQL(rpm安装则仅能安装一个MySQL)。
- 根据需要存储的数据内容选择只安装需要的字符集。
理论上源码静态编译方式安装效率会高一点,但到底比rpm方式高多少得看具体情况,一般在5%左右。
某次在线上环境工作,我用yum卸载一个软件包时遇到了极其危险的情况,这里也跟大家分享一下:当时,yum remove自动卸载了许多这个软件包自身依赖的系统包,导致系统崩溃了,SSH不能登录,并且SCP及RSYNC也都不能用了,幸亏FTP命令还能用, 所以数据很快被FTP传到其他服务器上了,但系统已经彻底崩溃,只有重装了。如果是源码安装的软件包就没有这种危险,需要卸载时只需要删除软件包安装的目 录即可。
综上所述,源码安装的好处如下:
- 最大的好处就是可以自行调整编译参数,最大化地定制安装结果。
- 源码安装可以选择最新的软件包,而Linux系统(包括FreeBSD)自带的软件包一般都是最稳定的版本,但不能保证是最新的。
- 相对而言,源码安装的性能是最优异的。
- 源码包安装的软件卸载时极为方便和简单,更重要的是,它比较安全,尤其是对线上的生产环境而言。
- 迁徙也比较方便,如果不涉及系统库文件,复制到另一台机器上也可以使用。
这里也简单介绍一下在Linux/Unix下安装软件的源码三部曲,在后面我们会经常看到它们的身影。
./configure
make
make install
./configure是用来检查环境变量及配置编译选项的,make是用来将源代码编译成二进制文件的,而make install则会将make编译出来的文件安装到指定位置(或默认位置)。
在本节中,我们从服务器的硬件选择、安装及内核等方面对单机服务器的性能进行了优化,不过对于网站和系统来说,单机优化对整体性能提升的作用毕竟有限,整体性能提升主要靠服务器的高可用和高扩展性来实现,这部分内容在后面的章节中再来说明。
------------------------------
本文节选自《构建高可用Linux服务器》
第1章第5节“Linux服务器的优化”,欲阅读本书更多内容,请访问http://book.51cto.com/art/201111/300715.htm
。
《构建高可用Linux服务器》 内 容简介:资深linux/unix系统管理专家兼架构师多年一线工作经验结晶,51cto和chinaunix等知名社区联袂推荐。结合实际生产环境,从 linux虚拟化、集群、服务器故障诊断与排除、系统安全性等多角度阐述构建高可用linux服务器的最佳实践。本书实践性非常强,包含大量企业级的应用 案例及相应的解决方案,读者可以直接用这些方案解决在实际工作中遇到的问题。
《构建高可用Linux服务器》 作者简介:余洪春(网名“抚琴煮酒”),资 深项目实施工程师、高级Linux/Unix系统管理员,从事CDN系统和电子商务网站的管理和运维7年多,在FreeBSD、VPN、SHELL脚本、 Linux服务器虚拟化、高可用Linux集群建设、Linux服务器故障诊断与排除、Linux系统安全等方面有十分深入的研究,在大量的一线实践中积 累了丰富的经验。资深系统架构师,精通负载均衡高可用技术,擅长证券类和电子商务类网站的架构。51CTO和ChinaUnix等知名社区的特邀专 家,51CTO系统、安全、网络频道的专栏作家,ChinaUnix论坛“集群和高可用版”版主,在社区内发表了大量技术文章,深受网友欢迎。
发表评论
-
大规模分布式系统架构与设计实战
2014-03-17 16:22 1441在大数据、云计算如 ... -
设计模式之禅(第2版)
2014-03-12 16:10 1696同样是导演,为什么詹姆斯·卡梅隆、史蒂芬·斯皮尔伯格能够制作 ... -
算法心得:高效算法的奥秘
2014-03-10 11:14 1334写代码总会遇到难题, ... -
享有盛誉的R语言图书
2013-05-29 11:29 1423数据挖掘与R语言 http://book.douba ... -
数据挖掘与R语言
2013-04-23 15:06 1468数据挖掘正在改变着 ... -
程序员度量:改善软件团队的分析学
2013-03-11 17:34 1432《程序员度量:改善软 ... -
加微信/转微博,赢华章经典计算机图书
2013-02-28 13:39 940一、如何获赠图书? 满足下面两个条件之一即有机会获赠华章 ... -
ClipboardService(CBS)中的权限管理
2012-08-06 15:24 1041ClipboardService(CBS)是Android系统 ... -
社交网站的数据挖掘与分析
2012-02-19 16:29 1000关于本书:【互动网 ... -
计算机经典图书样章免费下载【持续更新中……】
2012-01-31 09:03 1071欲关注持续更新的书单,请移步至: http://blog ... -
计算机经典图书样章免费下载【持续更新中……】
2011-10-10 17:42 934声明:每本电子书的内容并不完整, 均为试读章节 。 ... -
华章IT图书书讯(2011年第9期)
2011-09-27 18:02 839深入理解Android:卷I 结合实际应用 ... -
IT业魂在何方
2011-09-21 09:09 1199《新机器的灵魂》 ... -
近百本精品图书全部免费赠送——仅面向学生
2011-09-08 14:19 1444华章计算机科学丛书,经典伴你成长:从校园到职场 ... -
深入理解Android
2011-09-01 20:12 1105《深入理解Android: ... -
云计算的基础设施服务
2011-08-03 16:11 1370《云计算:企业实施 ... -
对任何希望深入理解C#的程序员来说,这本书都是不容错过的经典书籍
2011-07-27 17:15 959“ 据我的经验,我敢说每个程序员在读这本书的时候都至少会有一 ... -
你学或不学,Java就在那里,不离不弃
2011-07-26 14:24 948【基础篇】 《Java核心技术卷I:基础知识(原书第8版 ... -
ExtJS Web应用程序开发指南(第2版)(针对Ext JS 4.0更新)
2011-07-21 14:40 1765《ExtJS Web应用程序开发指南(第2 ... -
JavaScript权威指南(第6版)》诚征广大读者参与初译稿审校活动!
2011-07-19 10:52 936《JavaScript权威指南(第6版)》英文 ...
相关推荐
内容概要:本文详细介绍了基于40nm工艺的SNN(Spiking Neural Network)加速器的设计与实现全过程。首先从RTL(寄存器传输级)设计入手,展示了神经元模块的基本Verilog代码及其测试平台的构建方法。接着,通过前仿真确保设计的功能正确性,使用VCS工具进行验证。随后进入综合阶段,利用Design Compiler将RTL代码转化为门级网表,并对综合后的设计进行了性能评估。接下来是ICC2布局阶段,通过TCL脚本实现自动化布局,确保物理版图的合理性。最后,通过Makefile整合所有步骤,形成了一套完整的自动化流程。文中还分享了许多实际开发过程中遇到的问题及解决方案,强调了细节处理的重要性。 适合人群:对数字IC设计感兴趣的初学者和技术爱好者,尤其是希望深入了解从RTL到门级电路布局全流程的人群。 使用场景及目标:适用于想要掌握数字IC设计全流程的新手开发者,帮助他们理解并实践从RTL设计到物理版图生成的具体步骤,提高实际动手能力。 其他说明:文章不仅提供了详细的代码示例和技术细节,还分享了作者在实际开发中积累的经验教训,有助于读者避开常见陷阱,提升设计成功率。
内容概要:本文详细介绍了基于双向反激变换器的锂电池组SOC主动均衡控制系统的实现过程。首先,文中解释了双向反激变换器的工作原理及其作为能量搬运工具的作用,特别是在SOC过高或过低时的能量转移机制。接着,展示了STM32的PWM配置代码用于驱动MOS管,以及Python仿真的核心算法——平均值-均方差双重判据来决定是否进行均衡。此外,强调了过充过保逻辑的重要性,包括三级保护措施的具体实现。最后,讨论了一些常见的调试陷阱和技术细节,如MOS管驱动不足、变压器漏感等问题,并提供了完整的代码和硬件配置建议。 适合人群:从事锂电池管理系统(BMS)、电力电子、嵌入式系统开发的技术人员,尤其是有一定硬件和软件基础的研发人员。 使用场景及目标:适用于需要对多节锂电池组进行高效、精确SOC均衡控制的应用场合,如电动汽车、储能系统等。主要目标是提高电池组的整体性能和寿命,确保安全运行。 其他说明:文中不仅提供了详细的理论分析和技术实现,还包括了许多实用的经验分享和调试技巧,有助于读者更好地理解和应用这一技术。
内容概要:本文详细介绍了使用MATLAB进行增程式电动汽车(EREV)建模与仿真的全过程。主要内容涵盖EREV的基本概念、各子系统的建模方法(电池、电机、发动机、离合器)、控制系统的设计以及不同工况下的仿真结果分析。文中不仅提供了具体的MATLAB函数实现,还讨论了建模过程中遇到的问题及其解决方案,如发动机启停优化、电池充放电策略、模式切换逻辑等。通过多个NEDC工况的仿真测试,验证了模型的有效性和优越性能。 适合人群:对新能源汽车技术感兴趣的科研人员、工程技术人员及高校相关专业师生。 使用场景及目标:适用于希望深入了解EREV工作原理和技术实现的研究者;可用于教学演示、技术培训或作为工程项目的基础参考资料。 其他说明:文章强调了MATLAB在新能源车辆建模与仿真中的强大功能,并指出未来可以通过引入机器学习算法进一步提升控制系统的智能化水平。此外,作者分享了许多实用的经验技巧,有助于读者更好地理解和应用所介绍的技术。
光电材料仿真,电子仿真等;从入门到精通教程;含代码案例解析。
内容概要:本文详细介绍了针对双三相永磁同步电机的一种新型无模型预测控制方法。该方法利用扩张状态观测器(ESO)实时捕捉系统扰动,结合虚拟电压矢量生成技术和占空比优化算法,有效解决了传统控制方法在参数变化和负载突变情况下的不足。主要内容包括:虚拟电压矢量的生成及其对电流谐波的抑制作用;ESO的设计与参数调节,特别是在应对负载突变时的表现;以及占空比优化算法的应用,如黄金分割法和二分法,用于提高系统的响应速度和平滑度。实验结果显示,该方法显著提升了系统的抗干扰能力和控制精度。 适合人群:从事电机控制系统研究与开发的技术人员,尤其是对永磁同步电机控制感兴趣的工程师和研究人员。 使用场景及目标:适用于需要高性能、高可靠性的电机控制系统,如工业自动化设备、家用电器等。主要目标是提高电机控制系统的鲁棒性和效率,减少电流谐波和转矩脉动,增强系统的抗干扰能力。 其他说明:文中提供了详细的算法实现代码和实验数据,有助于读者深入理解和实际应用。此外,文章还讨论了一些实际工程中可能遇到的问题及解决方案,为后续的研究和开发提供了宝贵的实践经验。
内容概要:本文详细介绍了永磁同步电机(PMSM)采用滑模控制(SMC)与模型预测转矩控制(MPTC)相结合的控制策略及其在Simulink中的仿真实现。滑模控制用于转速环,通过设计滑模面和切换增益来提高系统的鲁棒性和抗扰动能力;模型预测转矩控制则应用于转矩环,利用滚动优化和代价函数最小化来实现精确的转矩控制。文中提供了具体的MATLAB代码片段,展示了如何通过调整参数如饱和函数、预测步长和权重系数来优化控制性能。仿真结果显示,在面对转速阶跃和突加负载的情况下,该混合控制策略能够显著降低超调量并提高响应速度。 适合人群:从事电机控制系统研究与开发的技术人员,尤其是对永磁同步电机控制感兴趣的工程师和研究人员。 使用场景及目标:适用于需要高性能、高精度电机控制的应用场合,如工业自动化、电动汽车等领域。目标是通过滑模控制和模型预测转矩控制的结合,实现更好的动态响应和抗扰动性能。 其他说明:文中还提到了一些调试技巧和常见问题,如仿真步长的选择、参数设置的影响以及如何避免常见的错误配置。此外,附带了一份《滑模控制极简指南》,帮助读者更好地理解和应用滑模控制理论。
内容概要:本文介绍了利用ABAQUS软件和CEL(耦合欧拉-拉格朗日)算法进行高速射流冲击金属板的动力响应模拟。CEL算法将计算域分为欧拉网格(用于流体)和拉格朗日网格(用于固体),能够有效地处理流固耦合问题。文中详细描述了材料定义、网格划分、边界条件设置以及接触定义等关键技术环节,并展示了如何通过Python脚本进行后处理分析。特别强调了射流速度、材料参数选择、网格尺寸优化等方面的经验和技巧。实验结果表明,水平速度分量会导致射流在金属板表面形成螺旋状侵蚀轨迹,增加了损伤范围。此外,该模型还可以应用于水下破岩分析等领域。 适合人群:从事流固耦合仿真、材料科学、机械工程等相关领域的研究人员和技术人员。 使用场景及目标:适用于需要模拟高速流体冲击固体结构的动力响应情况,如水下爆破、水力压裂等。主要目标是理解和预测材料在极端条件下的变形和破坏机制。 其他说明:文中提供了详细的代码示例和注意事项,帮助读者更好地理解和应用CEL算法。同时,还分享了一些实践经验,如网格尺寸优化、边界条件设置等,有助于提高仿真的准确性和效率。
内容概要:本文详细介绍了使用LabVIEW开发振动与声音分析软件的方法和技术细节。首先,文章讲解了如何通过NI-DAQmx工具包进行振动和声音信号的采集,包括创建任务、配置虚拟通道、设定采样率等步骤。接下来,探讨了时域分析和频域分析的具体实现方式,如计算幅值、使用快速傅里叶变换(FFT)进行频域分析等。此外,还涉及了振动特征提取、声压级计算以及阶次跟踪等功能模块的设计思路。文中不仅提供了详细的代码示例,还分享了一些实用的经验技巧,如选择合适的窗函数、处理高频共振等问题。 适合人群:从事机械设备维护、故障诊断的研究人员和技术人员,尤其是对LabVIEW有一定了解并希望深入掌握其在振动与声音分析方面应用的人群。 使用场景及目标:适用于需要对机械设备进行状态监测和故障预警的企业或研究机构。通过本篇文章的学习,读者可以掌握如何利用LabVIEW搭建完整的振动与声音分析系统,从而有效提升设备管理效率,降低维护成本。 其他说明:文章强调了LabVIEW在信号处理领域的优势,特别是其图形化编程的特点使得复杂算法变得易于理解和实现。同时,文中提到的所有代码均已开源,可供读者下载并应用于实际项目中。
基于 Global Context Vision Transformers-UNet(GCViT)模型实现的oct黄斑水肿和裂孔完整分割项目、代码、数据、和训练结果、推理结果等 数据集采用【oct黄斑水肿和裂孔,dice约为0.9,训练了300个epoch】,数据在data目录下,划分了训练集和验证集。 【介绍】分割网络为UGlobal Context Vision Transformers-UNet(GCViT),学习率采用cos余弦退火算法。如果想在大尺度进行训练,修改base-size参数即可,优化器采用了AdamW。评估的指标为dice、iou、recall、precision、f1、pixel accuracy等代码会对训练和验证集进行评估。 更多医学图像语义分割实战:https://blog.csdn.net/qq_44886601/category_12816068.html 医学图像改进:https://blog.csdn.net/qq_44886601/category_12858320.html
光电材料仿真,电子仿真等;从入门到精通教程;含代码案例解析。
内容概要:本文详细介绍了利用ABAQUS软件及其耦合欧拉-拉格朗日(Coupled Eulerian-Lagrangian, CEL)算法进行斜桩锤击入土过程的有限元模拟。主要内容涵盖地应力平衡设定、锤击荷载施加方式、后处理技术如粒子示踪的应用以及结果分析等方面。文中提供了具体的ABAQUS命令行代码片段,解释了如何配置材料属性、定义荷载工况并提取关键结果数据。此外,作者分享了一些实用的经验和技巧,例如避免常见错误的方法、优化模型稳定性和效率的技术等。 适合人群:从事岩土工程、结构工程及相关领域的研究人员和技术人员,尤其适用于那些希望深入了解ABAQUS软件高级应用的人群。 使用场景及目标:①为科研工作者提供详细的ABAQUS建模指导,帮助他们更好地理解和掌握CEL算法在解决复杂地质问题中的优势;②为企业工程师提供实际工程项目中遇到的具体问题解决方案,提升工作效率和准确性。 其他说明:文章不仅限于理论讲解,还包括大量实例演示和实践经验分享,有助于读者将所学应用于实际工作中。
内容概要:本文详细介绍了电动汽车离线动态规划(DP)节能速度规划算法及其与Carsim联合仿真的具体实现方法。首先,通过Matlab实现DP算法的核心部分,包括状态转移方程、加速度约束、能耗计算等。接着,通过Simulink将DP计算出的速度轨迹输入Carsim进行仿真验证,过程中涉及PID控制器的优化以及各种参数的调整。最后,通过多次实验验证了该系统的有效性,展示了其在不同路况下的节能效果。 适合人群:从事电动汽车控制策略开发的研究人员和技术人员,尤其是对能耗优化感兴趣的开发者。 使用场景及目标:适用于电动汽车的节能优化研究,旨在通过离线DP算法规划最优速度轨迹,并通过Carsim仿真验证其实效性,从而提高车辆的整体能效。 其他说明:文中提到了多个调试经验和常见问题解决方案,如数据同步、PID参数调整等,有助于读者更好地理解和应用该技术。同时,强调了高精地图对于能耗优化的重要性。
内容概要:本文详细介绍了利用COMSOL进行石油工程中离散裂缝模型(DFM)的两相流(油+水)模拟的方法和技术要点。首先解释了传统双重介质模型的局限性和离散裂缝模型的优势,接着深入探讨了裂缝和基质间的流动方程及其求解方法,如达西定律的修改版、相对渗透率函数的选择以及裂缝-基质交界面上的质量传递条件。文中还分享了具体的建模步骤,包括几何构建、物理场设定、边界条件配置等方面的经验,并强调了后处理过程中的一些实用技巧,如使用探针监测含水率变化、采用自适应网格提高精度等。此外,作者提到了一些常见的陷阱和解决方案,例如避免数值振荡、正确设置α参数等。最后,提供了若干参考文献供进一步研究。 适合人群:从事石油工程领域的研究人员、工程师以及相关专业的高年级本科生和研究生。 使用场景及目标:适用于需要精确模拟复杂地质条件下油水流体行为的研究项目,旨在提升对裂缝系统中流体传输机制的理解,优化油藏管理决策。 其他说明:文中涉及大量MATLAB和COMSOL的具体操作指导,对于希望深入了解并掌握这一先进技术的人来说非常有价值。同时提醒读者关注最新版本的软件特性,以便更好地应用于实际工作中。
内容概要:本文详细探讨了永磁直驱风力发电系统(PMSG)中采用的背靠背双PWM变流器控制策略及其在MATLAB/Simulink中的仿真实现。文中介绍了机侧和网侧变流器的双闭环控制策略,包括转速外环、电流内环、电压外环等具体实现方式。此外,文章还讨论了最大功率点跟踪(MPPT)算法的应用,特别是定步长爬山搜索法的具体实现及其优化措施。仿真结果显示,该系统在不同风速条件下均表现出良好的性能,如并网电流谐波含量低、最大功率跟踪效果好等。 适用人群:从事风力发电系统设计、仿真及相关研究的技术人员和研究人员。 使用场景及目标:适用于希望深入了解永磁直驱风力发电系统的工作原理和技术细节的研究人员,以及希望通过仿真验证设计方案的工程师。目标是提高对双PWM变流器控制策略的理解,掌握MPPT算法的实现方法,并能够应用这些知识进行实际项目开发。 其他说明:文章提供了详细的MATLAB代码示例和仿真模型,帮助读者更好地理解和实践相关技术。同时,针对不同电压等级(380V和690V)的系统进行了对比分析,揭示了参数调整的关键点。
内容概要:本文详细介绍了利用西门子TIA Portal V15.1和Factory IO构建虚拟工厂仿真的全过程。首先讲述了环境搭建,包括选择合适的PLC型号(如S7-1200)、正确配置通信参数(如IP地址)以及启用必要的通信权限。接着深入探讨了Factory IO场景的创建,强调了合理的信号映射和物理属性设置对于仿真效果的影响。随后展示了PLC程序的设计思路,特别是状态机的应用和关键逻辑的实现方法。文中还记录了一些常见的调试问题及其解决方案,例如因变量映射错误导致的传送带异常加速现象。最后分享了作者在联机调试过程中积累的经验教训,如使用Ping命令检查网络连通性和调整定时器参数避免误触发等。 适合人群:从事工业自动化领域的工程师和技术爱好者,尤其是对PLC编程和虚拟仿真感兴趣的初学者。 使用场景及目标:帮助读者掌握如何使用TIA Portal和Factory IO进行虚拟工厂仿真系统的搭建与调试,提高编程技能并减少实际项目中的试错成本。 其他说明:文中提供了大量实用的技术细节和实战案例,有助于加深理解和应用。同时提醒读者注意一些容易忽视的小问题,如IP地址配置、变量映射等,这些都是确保系统稳定运行的关键因素。
内容概要:本文详细介绍了在一个工业自动化项目中,利用西门子WINCC平台实现水电气能源消耗数据的自动收集、存储以及生成每日Excel报表的技术方案。主要内容涵盖:使用SQL Anywhere数据库进行数据存储,通过VBScript编写定时任务来捕获实时能耗数据并插入数据库;采用SQL查询语句汇总前一天的数据用于生成报告;借助WINCC内置的Report控件或直接调用Excel应用程序接口完成最终的Excel文件制作。此外,文中还讨论了一些常见的陷阱和技术难点,如确保时间戳一致性、处理文件路径权限问题、避免内存泄漏等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责能源管理系统实施和维护的专业人士。 使用场景及目标:适用于需要定期生成能源消耗统计数据的企业,特别是制造业、化工行业等大型工厂。主要目的是提高工作效率,减少人工干预,确保数据准确性,帮助管理层更好地掌握企业的能源使用情况。 其他说明:作者强调了对现有工具特性的深入理解和合理运用的重要性,而不是盲目追求新技术。同时,他还提到可以通过进一步优化(例如引入Python作为中间件)来提升性能。
内容概要:本文详细介绍了如何在昆仑通态触摸屏上实现分期付款功能及其最新组态软件的应用。首先阐述了项目背景,即在某些商业设备场景中实现分期付款的需求。接着,文章逐步讲解了程序的设计思路,包括数据存储(如产品价格、首付金额、分期期数等)、计算逻辑(如剩余金额和每期金额的计算)以及界面设计(如文本框、按钮和文本显示区域)。此外,文中还展示了完整的程序示例,涵盖了从用户输入到结果显示的具体实现方法。同时,针对实际开发过程中遇到的问题,如千分位显示、事件触发顺序、重复扣款等,给出了相应的解决方案。最后,强调了通讯安全、数据存储(如SQLite数据库)、界面设计的小技巧(如进度条控件)和支付成功的处理细节。 适用人群:适用于从事工业自动化控制和人机交互领域的工程师和技术人员,尤其是那些希望深入了解昆仑通态触摸屏及其组态软件使用的专业人士。 使用场景及目标:①帮助工程师和技术人员掌握如何在昆仑通态触摸屏上实现分期付款功能;②提高用户体验,使操作更加直观简便;③为实际应用场景提供有力的技术支持,如设备制造商为客户提供的灵活设备购买方案。 其他说明:文中不仅提供了详细的代码示例,还分享了许多实际开发中的经验和技巧,有助于读者更好地理解和应用相关技术。
光储一体化供电系统解决方案【20页PPT】
地级市政府通过制定相关政策来推动数字经济的发展和数字政府的建设。这些政策可能包括鼓励企业数字化转型、促进数字技术创新、加强数字基础设施建设、优化数字政务服务等方面的内容。政策制定的频率和力度,可以在一定程度上反映政府对数字领域的关注度。 在地级市政府数字关注度的背景下,词频分析成为了一种有效的工具,用以衡量政府文件和宣传资料中涉及数字技术和数字化转型相关词汇的频次,进而揭示政府对这一领域的关注程度和重视方向。 数据名称:地级市-政府数字关注度、词频
内容概要:本文详细介绍了利用3DEC 9.0软件进行混凝土梁三点弯曲实验的方法,旨在重现梁体的损伤破坏过程。首先,通过具体的命令搭建了混凝土本构梁模型,选择了合适的本构模型(如Mohr-Coulomb模型)。然后,设置了三点弯曲试验的具体加载和约束条件,确保实验环境符合实际需求。最后,通过一系列监测命令,观察并记录了梁体在不同应力下的损伤发展情况,特别是裂缝的形成和发展。整个过程不仅展示了3DEC的强大功能,也为混凝土梁结构的力学性能研究提供了重要的数据支持和可视化展示。 适合人群:从事岩土工程、结构工程及相关领域的研究人员和技术人员,尤其是对数值模拟感兴趣的工程师。 使用场景及目标:适用于需要深入了解混凝土梁在三点弯曲实验中的损伤破坏机制的研究项目。目标是通过精确的数值模拟,为实际工程应用提供可靠的理论依据和技术支持。 其他说明:文中提供的代码片段和详细的步骤说明,使得读者可以轻松复现实验过程,同时强调了关键参数的选择和调整对于实验结果的影响。