1、静态资源和动态资源的区别,优缺点如何?
答;静态资源:URL固定,后缀名诸如.html和.jpg和.gif,它是服务端存在的一种文件,浏览器进行解析,不与数据库交互,有利于网站推广(SEO),维护麻烦。
动态资源:有数据库支持,内容丰富,后缀名诸如.jsp和php,服务端解释执行,交互性能好,执行消耗服务端的CPU资源,
推荐优化将动态页面转为静态页面。
2、什么是伪静态,如何实现,有何特点。MIME类型是何物?
答:动态URL伪装为静态URL,rewrite规则实现,方便搜索引擎收录,提升用户体验,网站性能不升反降。伪静态网页的URL通常不显示后缀名,
MIME是服务端响应的数据类型,
3、简述nginx与apache区别?
答:(1)nginx处理静态页面能力强,apache处理动态页面能力强。
(2)nginx的抗并发性能好,消耗内存小。
(3)nginx能做反向代理和负载均衡,同时具有缓存功能。
(4)相对于apache模块化的庞然大物来说,nginx是个轻量级的web服务器。
(5)nginx与PHP结合,是分离式的,而apache与PHP进程整合可以是模块化嵌入的,也可以是fastcgi类型的。
(6)apache处理请求时prefork或者worker模型,而nginx是event模型。
(7)apache的事件IO处理模型是select模型,而Nginx的事件IO处理模型是epoll模型。
4、在Nginx中,请说明Rewrite模块里break和last的区别?
答:(1)break:终止此轮rewrite循环,并且不再进行新的URI匹配。
(2)last:终止此轮rewrite循环,并且寻找下一个新的URI匹配。
##rewrite规则里总共有last、break、redirect、permanent四种标志符。
5、Apache的select模型和Nginx的epoll模型?
答:太难。开发人员才深究这个。知道epoll多路复用比较高校,没有最大文件描述符的限制。
参考文档:http://blog.163.com/niuxiangshan%40126/blog/static/17059659520141711458276/
6、文件内容如下,里面都是一些随机的数字,如何实现求最大值和最小值。(以后遇到求大小的值,都把它放在一个文件里,用tr命令转为为列,再排序,套路都一样,记住了!)
[root@www Scripts]# cat 3.txt
10 60
20 70
30 40
50 8 4
答:[root@www Scripts]# cat 3.txt |tr " " "\n"|sort -n|sed -n '1p;$p' ##这里的tr命令必须把空格的引号分开来,不然无法转成列
##这里有点小bug,如果8往后移一点,跟40不对齐,就会出现问题,不过这些东西只是为了笔试面试而已,工作中不会用到吧,比如求三个数的最大值,最小值问题。
#!/bin/bash
echo "$1 $2 $3">file.txt
cat file.txt|tr " " "\n"|sort -n |sed -n '1p;$p'
7、介绍下LVS负载模式的优缺点以及相应调度算法,相比的Nginx负载均衡有几种算法呢?
答:(1)NAT模式的优点是可以运行任何支持TCP/IP的操作系统,windows和linux都可以,服务器组可以使用私有IP地址。缺点是调度器本身可能成为瓶颈。
(2)DR模式的有点是后端real server直接将数据返回给客户端本身,这样调度器就能处理大量的请求,缺点后端服务器主要运行linux操作系统。
(3)隧道模式优点是一般用于远程服务器,要求调度器和后端real server都要支持相应的隧道协议。
算法:轮询、加权轮询、最少连接(已经建立的连接数最少)、加权最少连接(加权就是根据服务器的处理能力做权衡比重)、基于局部性的最少连接(局部性就是Cache集群系统)、带复制的基于局部性最少连接(复制就是将最忙的服务器从服务器组中删除)、目的地址散列(根据请求的目的IP地址做散列键),源地址散列(根据请求的源IP地址做散列键)。
Nginx:ip_hash、URL_hash、权重、轮询。
8、集群服务器中有一台发生故障,导致时好时坏,你该如何处理?(现如今,我没经历过生产环境,确实还不知道怎么办)
答:(1)前端调度器使用Keepalived,如果后端服务器有故障则会自动从服务器组中剔除,如果恢复正常,则又加入集群队列。
(2)然后分析故障现象,查看日志,到底是硬件上的问题,还是软件的bug,总之可靠性是个很严肃的问题。
9、Mysql的数据库安全性?
答:操作系统系别,硬件防火墙、iptables、TCP_wrappers干掉外部不可信任的网络。
数据库级别来说,对用户能使用哪些数据库做限制,对SQL语句操作的合理授权,防止内网开发人员搞破坏。
对磁盘上备份的数据文件进行加密,防止数据泄露和篡改,等需要恢复的时候,再解密。
禁用~/mysql.histroy文件,因为这个文件记录了管理员操作SQL命令的语句,如果被黑客获取,很容易知道的数据库表结构。
对日志文件进行chroot,改变根目录,保证安全性。
10、IDC机房部署考虑因素问题。(这题被问到笔试一次,面试一次)
答:异地容灾啊,消防设施,散热设施,机房选址等等。
11、硬件故障、用户误操作、系统崩溃等原因导致数据丢失,你该怎么处理?(这TM的肯定又喜欢考)
答:(1)先拷贝和保护现有完好的数据,防止被二次破坏
(1)事先应该有备份资源,从这里进行恢复。回忆自己最近干过什么事情,便于排错。
(3)及时通知上级出现了意外情况,以免自己耽搁时间(呵呵,有些人就喜欢听到这个了)
12、Nagios报警邮件收不到怎么办?
答:(1)ps命令,查看Nagios 守护进程起来了没有。
(2)查看日志/var/log/maillog,是不是邮件服务器把我们发的告警邮件当成垃圾邮件给拒绝了,QQ邮箱防垃圾邮件最厉害。
(3)使用系统自带的sendmail服务,是不是启动该进程的用户的权限收到了限制。
(4)检查我们的配置文件是不是出了问题,可能语法没错,但是漏了点什么东西,诸如commands.cfg,host.cfg,contact.cfg
13、你是如何做Nagios告警策略的?(说实话,我暂时没做过)
答:(1)可以下载飞信软件进行短信报警,也可以使用系统自带的sendmail服务进行邮件报警。
(2)在Nagios配置文件中定义contact.cfg,添加接收的邮件地址,以及在什么监控指标下报警。其实Nagios整个监控
和报警流程,都是配置文件的彼此调用。
(3)保证25端口能够起来即可。
参考文档:http://blog.chinaunix.net/uid-418401-id-2405565.html
14、Memcached分布式原理?一致性哈希原理?
答:(1)分布式原理:假设有5台memcached服务器:node1,node2…node5。现在要保存键为key1,key2…key10的数据。首先往memcached中添加key1。将key1传给客户端程序之后,客户端实现的算法会根据这个键“key1”来决定保存数据的memcached服务器。将服务器选定之后,将会用选定的服务器来保存“key1”和对应的值。在获取数据的时候,通过先根据要获取的数据的key来根据客户端实现的相同的算法选择对应的数据保存的服务器,然后取出数据。这样就实现了memcached的分布式。Memcached的服务器增多,则键就会更加的分散。及时一台服务器挂掉,也不会影响其他的缓存。
(2)一致性哈希这种方法首先求出memcached服务器的哈希值,然后将它分配到0~2^32的圆上,然后使用同样的办法求出数据的健的哈希值,将其映射到圆上。然后从数据映射的点开始顺时针的查找,将数据保存到查找到的第一台服务器上面。
参考文档:http://lzs66.blog.51cto.com/9607068/1859818
15、分布式集群有何优点?
答:(1)当一台服务器的处理性能达到极限时,我们使用分布式集群来提高网站的处理性能,使用一定的调度算法进行负载均衡。
(2)分布式集群具有冗余的作用,当一台服务器的数据丢失的时候,我们还可以从其他机器进行恢复同步。
16、Postfix的工作过程。
答:用户在某网站上申请一个账户,当用户需要发信时用户会通过本机的MUA发送给网站的SMTPD,并且进入邮件队列,SMTPD发现这个邮件是发送给本地主机,就通过MDA,把邮件投递到用户的邮箱中,如果发现是发给别的主机或域的就中继出去。当用户需要收取邮件的时候,MRA会要求用户验证,如果通过了验证,MRA会替用户去用户的邮箱把邮件取回来然后传递给用户的MUA。整个过程是这样的。 由于SMTPD是位热心的同志,凡是到它那的邮件如果是它主机用户的它就收下然后投递到用户邮箱,不是它用户的它就热心的帮忙转发,早期垃圾邮件横行也有一部分是这个原因,所以现在基本上所有的邮件服务器都关闭了开放式中继(openrelay),只给本机或本域的用户转发邮件,但是问题有出现了,以前可以凭来源IP可以判断是不是本机或本域的用户,现在都是基于虚拟用户的(每个用户注册的都是系统用户啊多不安全啊),无法基于IP判断了,于是引入了另一个认证机制SASL(Simple Authentication Secure Layer),当用户需要发送邮件的时候,SMTPD会调用SASL来验证,如果验证通过了就给你中继,如果通不过那么对不起,去找别人吧。
参考文档:http://www.tuicool.com/articles/biErAn
17、为什么说Nginx支持高并发?(这个问题很难)
答:用个人话说,异步、非阻塞、epoll模型
(1)基于线程,即一个进程生成多个线程,每个线程响应用户的每个请求。
(2)基于事件的模型,一个进程处理多个请求,并且通过epoll机制来通知用户请求完成。
(3)基于磁盘的AIO(异步I/O)
(4)支持mmap内存映射,mmap传统的web服务器,进行页面输入时,都是将磁盘的页面先输入到内核缓存中,再由内核缓存中复制一份到web服务器上,mmap机制就是让内核缓存与磁盘进行映射,web服务器,直接复制页面内容即可。不需要先把磁盘的上的页面先输入到内核缓存去。
参考文档:http://5404542.blog.51cto.com/5394542/1740453
18、在不umount的情况下,如何重新设置mount的参数。如何查找某一文件被哪个进程打开?
答:mount -o remount,rw /
lsof /usr/bin/mysqld_safe
19、具体说说cacti/nagios 的安装过程?cacti如何监控mysql?
答:(1)cacti安装步骤:首先安装好lamp环境(建议都使用编译安装)和snmp服务,rrdtool工具安装,然后建立cacti库和登录mysql账号,并赋权;其次下载并解压cacti到web server的htdocs或html目录下,确保敲入http://IP:port/cacti
能被访问到,进而在web上安装cacti,修改web页面上的snmp团体字,确保跟snmpd.conf的团体字一致,然后再手动执行php poller.php看看能否在rra目录下生成.rrd文件,默认只监控本机资源,将php.poller.php命令写入到crontab中,每5分钟执行一次,如果需要监控远程主机,需要在对方主机安装snmp服务,并且保证snmp的团体字与监控主机上的snmp团体字是一致的;最后,添加其他监控主机,添加模板,安装插件等一系列工作。
(2)nagios安装步骤:首先同样安装好lamp环境(建议使用编译安装),然后下载并安装nagios和nagios-plugin,整合apache和naigos,并创建web登录账号验证,确保敲入http://IP:port/nagios/
能正常访问并登录,远程主机安装nrpe或NClient++;最后添加配置远程主机信息,报警功能实现,添加所需的监控指标等工作。
(3)cacti监控mysql:首先到cacti的论坛上下载cacti监控mysql的模板,然后导入到cacti中,然后添加主机,选择应用模板,最后等待5分钟,看看是否监控正常。
20、sed和awk命令的区别?
答:(1)awk适合按列(域)操作,sed适合按行操作。
(2)awk称为报表生成器,sed称为流编辑器。
(3)awk更为强大,支持数组、循环等,甚至可以看作是一门编程语言,内部语法类似C语言。
(4)sed是一个流编辑器,它的强大之处在于可以以行的方式来脚本化处理文本,并且语法相对awk来说更为简单,它的功能就是增删改查,但它毕竟不是编程语言,没有循环、数组等逻辑,所以,sed通常和awk一起使用,它们刚好互补,一起使用构成了文本处理的两个利器。
21、建立一个公共目录/opt/public,要求每个用户都可以创建文件和目录,但只能自己本人和root可以删除
答:mkdir /opt/public ,chmod 1777 /opt/public
rwsrw-r– 表示有setuid标志 chmod 4777是设sid
rwxrwsrw- 表示有setgid标志 chmod 2777是设置gid
rwxrw-rwt 表示有sticky标志 chmod 1777是设sticky
22、DNS递归查询和迭代查询的区别是什么?
答:递归查询是逐级查询,本地DNS请求根域名服务器,根域名服务器请求顶级域名服务器,顶级域名服务器请求二级域名服务器,
得到结果后,再进行回溯,二级域名服务器返回给顶级域名服务器,顶级域名服务器返回给根域名服务器,最后返给本地DNS。
(2)迭代查询,根域名服务器把顶级DNS的IP给了我,我去找顶级DNS,然后顶级DNS给我了二级DNS的IP,我去找二级DNS,最后二级DNS把解析的结果给了我。
23、linux文件删除原理。(感觉就是删了从文件名联系到inode的指针而已,并不是清除数据块)
答:linux是通过link数量控制文件删除,一般来说,每个文件都有两个计数器,i_link和i_count,i_link是文件的硬链接数。i_count是文件被进程调用数,只要i_link和i_count同时为0时,文件才会被删除。
rm删除的是文件的i_link数。
24、用ls 查看目录或者文件时,第二列的数值表示什么意思?如果一个目录的这列的值为3,那么这个3是如何得到的?
答:硬链接。此目录本身,此目录的父目录,此目录下的子目录,他们的I节点号都相同。
25、SSH原理
答:用户需要为自己创建一对密钥。用户要通过其他安全的方式,把公钥方在需要远程管理的服务器上。当管理员连接到SSH服务器上的时候,客户端会向服务器发出请求,要求其利用客户端的密钥进行安全性认证。服务器收到客户端的请求后,就会利用你事先发给他的公钥进行比较、辨别。如要两个密钥一致的话,服务器就用公钥加密质询并把它发送给客户端软件。客户端软件接收到服务器的质询后,就可以利用私人密钥进行解密并把结果发送给服务器。
参考文档:http://forlinux.blog.51cto.com/8001278/1352900
26、Linux下mv和cp命令的区别?(这个可以自己测试一下)
答:(1)cp相当于拷贝,mv相当于剪切,mv可以改名。
(2)cp复制的时候不会携带文件属性,比如Inode,mv移动的时候会携带Inode属性,从而导致移动后的目录Inode发生了改变。
参考文档:https://zhidao.baidu.com/question/1367462050558064859.html
27、 Memcached存取原理?
答:取:前端动态web应用程序,可以理解为客户端发出一个key的请求,而后该键被hash成一个哈希值,而后在一个0-2^32的哈希环上,进行顺时针查找,找什么呢?找的是距离最近的Memcached服务器节点的哈希值,被选中的服务器通过该key在巨大的内存哈希表中进行查找,如果有对应的键值对,则原路返回给客户端,如果没有,就向后台数据块服务器取一份回来,并进行查询缓存,从而减轻数据库负载,提高网站整体性能。
存:前端动态web应用程序,可以理解为客户端发出一个键值对请求,同样,根据一致性哈希算法,确定哪台服务器来存储,当被选中Memcached收到该键值对的时候,首先计算键值对的大小,看自己的数据块是否能够容纳该键值对,如果不够则向系统申请,如果申请达到了上线,就是用LRU算法移除掉最近最少使用的数据块,腾出空间来放最新的东西。
参考文档:http://www.cnblogs.com/yinrq/p/5013742.html
28、如何在不重启Nginx服务的情况下,对Nginx软件更新。(生产环境最难解决的问题,就是在不干扰业务的情况下,下线进行完善服务器)
答:Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程依然负责处理没有处理完毕的请求,但不再接受新的请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,进程撤销。
参考文档:http://blog.csdn.net/poechant/article/details/7208167
29、你对数据库备份怎么看?
答:首先,考虑要备份的数据库对象是什么,是表还是数据库还是日志;备份的环境是什么,主服务器上还是备服务器上,线上还是线下,然后才是备份的方式,逻辑备份还是物理备份。是本地硬盘备份还是异地容灾备份?备份后的测试,能恢复成功吗?等等
那么最重要的是备份方式的选择:
(1)mysqldump 命令进行备份,mysql命令进行恢复。
(2)在从机器上,停掉IO线程,然后锁住表,对数据文件进行冷备份
(3)MysqlHotcopy进行热备份
(4)直接对数据文件和日志文件rsync传输到另一台物理机器上。
(5)第三方工具,如Xtrabackup.
30、你对Linux运维有何认识,工作有啥特点,为什么想做这行?谈谈你的优势,我只关心技术上。(素质题是加好感的地方啊)
答:(1)从工作上来说:保证机房中物理基础的安全,如路由器、交换机、PC和服务器正常运作,对数据的迁移和备份,对主机和服务级别的监控,编写报告交给上级,对操作系统的安装配置,对服务软件的排错。
(2) 一个运维人员的价值就是当服务出现问题的时候,能够快速定位问题出现在哪一个环节,也许这个问题以前从没有接触过,
但是他知道该往哪个正确的方向去思考,从而在最短的时间减少公司的损失。(这一点非常重要,这才是他最想听的)
(3)技术优点:事实上,我并没有自信说我哪部分学的最好,我追求的是广度,不是深度,如果实在让我说哪部分基础相对扎实的话,我觉得是DNS和iptables。(如果这位面试官是思必驰的话,他还要继续问,还有吗还有吗?唉,人生阴影啊!)