首页 > 代码库 > 运维题目

运维题目

你用过那些LVS ,并讲述LVS各个模式的特点和区别?   【送二分】


dr模式用得比较多吧,这个模式效率最好。因为他的原理是把收到的包改了下hw地址就丢给交换机了

这样就造成两个大缺点

1是所有负载机器都要在同一个ip段才能响应,所以在idc上架的时候,为了方便扩容一开始就要预留好同ip段的ip,留ip是要钱的

2所有用户发过来的包交换机都要处理2次,加大了前端交换机的压力

3这种模式对收包少,回包多的应用(http常规应用)非常有效,但是如果是注册、登录之类(post大数据)的应用服务器,由于收包较多,lvs的服务器压力还是很大的(所以大量注册登录数据l的vs服务器的前面还是需要dns轮询来分流lvs服务器的),但是好歹把应用的计算压力给分担掉了


nat模式效率惨,原理和iptable做网关上网差不多,lvs服务器压力最大

最大的好处是只需要一个对外ip就可以了,内网ip随便配置,但是压力摆在那里,能配多少ip都么用


另外一个模式用的少也不怎么有兴趣了解


五 当LVS 超出它能承受最大的连接数了,你应做如何处理了?  【送五分】 

六 一千万 并发,你有那些方案?【提示这些单用LVS 成受不起的,】【送五分】 


这两题回答应该差不多


先用智能dsn负载到不同的lvs上


如果有钱可以在lvs前端上f5


智能dns——F5——LVS


三层负载分流,最后最大的压力其实还是在数据库上


第五题可以用淘宝优化过过得linux内核

其实主要就是改了内核编译的2个配置参数



八 IO 性能不足,你如何优调?   【系统优化题目】  【送三分】

简单的就是加硬件罗

raid卡加大缓存,用更快的硬盘


软件的话

磁盘写入用deadline,禁止文件系统的日志优化性能

oracle的话还尽量用裸磁盘做数据盘,不同业务还可以分开写到不同硬盘


如何 MySQL 优化                【应用优化题目】【提示 一定要按大并发】 【送三分】

数据库方面双主带多从,读写分离罗

改应用代码,把不常修改的数据全部读入memcache中(比如用户登录用的帐号数据),这样基本把mysql的读压力分担走

优化mysql语句,该用myiasm表的用myiasm表(比如不太太重要的用户帐号数据表),数据库设置concurrent_insert直接从表尾并发插入,这样可以有效降低大量注册与登录的锁竞争



十一 讲术 Memecahe 工作原理和优缺?【送二分】

memcache就是一个key-value的~~怎么说呢,nosql内存数据库?反正就是key-value形式把数据存放在内存的一个程序

优点速度快,部署方便

缺点吃内存,掉电就没数据了。

基本还是做mysql前端缓存或者存放诸如session之类丢掉后可以随时取回来的数据

大部分应用实现都需要修改代码,新项目随便弄,一开始设计好就行,旧项目得改代码,大型点的项目以前没上,现在我估计没人愿意去改代码上


十二 讲术CDN工作原理和优缺? 【送二分】

优点就是分流罗,可以有效分担静态资源的压力

最大缺点是各地数据同步需要一段时间,更新一个重要静态文件的话,生效时间急死人,而且价格也不便宜


十三 你如何监视服务器质量和网络质量?用个那些工具 及优缺点?【送二分】

nagios和cacti


cacti绘图漂亮,查看以往数据非常方便,但是报警功能弱

我觉得最大的缺点还是rrdtool上,cacti + rrdtool暂时没有把旧数据写到数据库的插件,导致做数据处理会很麻烦

取数据方便有snmp,能写各种脚本想要什么数据就有什么数据.


nagios报警强大,定义好报警脚本想短信猫就短信猫,想post短信平台就post短信平台

但是不适合查询以往数据,最大缺点不能像cacti那样一次行取多个数据进行记录、绘图,只能通过返回值确认是否故障。

一般都和cacti同时使用


sed /^[[:space:]]* $/d | sed /^$/d

egrep ‘xxx‘ a.log | grep -V ‘xxx‘|awk -F:‘{print $5}‘

iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp -dport 80 -j DNAT -to 192.168.16.1:8080

route add -net/host 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

#!/usr/bin/env python

i=0

n=input(‘please input‘)

while i<=n:

    i+=1

    print i*‘*‘


num=0

for x in range(1,101):

    num = num+x

    num +=x

    print num



name = raw_input(‘please input your name:‘)

passwd = raw_input(‘please input your passwd:‘)

login = [name, passwd]

def li():

   if login[0] == ‘admin‘ and login[1] == ‘123‘:

       print ‘login success!‘

   else:

       print ‘login again!‘

       name = raw_input(‘please input your name:‘)

       passwd = raw_input(‘please input your passwd:‘)

li()


find / -name "*.log" -ctime +3 -exec rm -f {} \;

find . -size +100k -exec cp {} /tmp \;

sed ‘s:/user/local:/tmp:g‘  filename

BIOS启动引导(从mbr中装载启动管理器grub)----GRUB启动引导(装载kernel和initrd到内存)-----内核启动参数-sys init初始化

awk ‘{print $1}‘ access_log |sort |uniq -c|sort -nr|head -n 10