windows服务器使用的远程连接端口默认 3389
查询max 记录: nslookup dig
postfix的配置文件main,cf中以下哪个参数是设置邮件大小的,message_size_limit
打开网站,出现以下错误
Fatal error: Unable to read **** bytes in
或者是
Fatal error: Corrupted encoded data detected
原因:
这种是由于php页面采用了Zend加密,因此FTP上传方式要使用二进制方式。不能采用auto和ASCII,否则就会出现这个错误
一定要确保下载和上传时都采用二进制方式,不然都有可能产生错误
二、访问出现500 Internal Server Error错误
原因:
查看FTP根目录是否存在.access文件,有的话原因就是因为它(FTP需要设置显示隐藏文件才可见此文件)
服务器不支持权限重写,删除掉此文件就可以正常访问了。
三、执行脚本提示错误
现象:
提示CGI/PHP程序错误: 该脚本不允许执行。不允许执行原因是: 脚本权限错误:不能设置为同组可写!
原因:
PHP文件的权限不能设置组和公共写入,把权限设置成644或755都可以
tar -zcvf xxx.tar.gz /mysql/* & 打包目录和目录下数据不一样
21 ftp 22 ssh 23 telnet 25 smtp 110 pop3 143imap 873 rsync
找出当前linux服务器所有监听的端口以及进程号
netstat -lnp
让某普通用户能进行cp /dirl/filel /dir2的命令时,请说明dirl filel最小具有什么权限
dir1 rx file1 r
查看某文件100行 sed -rn '100p' awk 'NR == 100 {print $0}'
系统调优
如何査看当前linux系统的状态如cpu使用,内存使用,负载情况,看到swap使用量大时,是不是意味着物理内存己不够用?
top命令就可以看cpu使用、内存使用以及负贵情况,当swap使用率大时,不一定是内存不够,如果swap容童固定不变,那内存
就不是瓶颈。用vmstat 1命令看,si so两列的数值在不断变化时,内存就不够了
看到swap使用量大时,并不意味着物理内存已不够用。还要结合vmstat 命令的si ,so ,如果si,so的数值大且频繁才是内存出现瓶颈!因为linux 会把inactive page存放到swap上
分析内存的瓶颈
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache有效缩短了I/O系统调用(比如read,write,getdents)的时间.
内存活动基本上可以用3个数字来量化:活动虚拟内存总量,交换(swapping)率和调页(paging)率.其中第一个数字表明内存的总需求量,后两个数字表示那些内存中有多少比例正处在使用之中.目标是减少内存活动或增加内存量,直到调页率保持在一个可以接受的水平上为止.
活动虚拟内存的总量(VM)=实际内存大小(size of real memory)(物理内存)+使用的交换空间大小(amount of swap space used)
当程序运行需要的内存大于物理内存时,UNIX系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。
大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
UNIX内存管理:UNIX系统通过2种方法进行内存管理,“调页算法”,“交换技术”。
调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。
交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。
当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
Unix的虚拟内存
Unix的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的UNIX的虚存的实现方式区别很大,但都离不开下面的4个概念。
1:实际内存
实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。
2:交换空间
交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。
3:页面调度
页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Unix内存被平均划分成大小相等的页面;通常页面大小为4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。
4:交换
页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。
[root@localhost ~]# vmstat -n 3 (每个3秒刷新一次)
procs-----------memory--------------------swap------io---- --system---- ------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0
2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0
0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0
0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0
2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0
MEMORY
-swap:切换到交换内存上的内存(默认以KB为单位)
如果SWAP的值不为0,或者还比较大,比如超过100M了,但是SI,SO的值长期为0,这种情况我们可以不用担心,不会影响系统性能。-free:空闲的物理内存
- buff:作为buffer cache的内存,对块设备的读写进行缓冲
-cache:作为page cache的内存,文件系统的cache
如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
SWAP
-si:交换内存使用,由磁盘调入内存
-so:交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
我发现有些朋友看到空闲内存(FREE)很少的或接近于0时,就认为内存不够用了,实际上不能光看这一点,Linux是抢占内存式的OS,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
2、当IO出现瓶颈时,应看哪个参数,为什么?
看 bi bo 硬盘IO写和IO读的值
主要观察avgqu-sz io队列的长度 建议值2~3
Await svctm 之间的时间差距,如果时间差距大,说明队列过长
Svctm 时间过长说明device io效率差
还有tps 每秒的iops是否满足你的业务需求 (r/s + w/s)
3 怎么查看内存使用情况?看到swap使用量大时,是不是意味着物理内存已不够用?
查看内存使用情况使用free –m
主要观察free的值,这个值越大越好。
看到swap使用量大时,并不意味着物理内存已不够用。还要结合vmstat 命令的si ,so ,如果si,so的数值大且频繁才是内存出现瓶颈!因为linux 会把inactive page存放到swap上。
何査看PID为29394的进程的环境变置
cat /proc/29394/environ
请找出/home下所有5天前以.log结尾的文件列表
find /home -type f -mtime +5 -name "*.log"
当io出现瓶颈时,应该査看哪个参数 :vmstat 1査看wa列,wa列表示处于等待状态的cpu百分比,当10比较慢时,CPU会有大1:的wait
当硬盘io出现瓶颈时,可以通过iostat查看硬盘io状态,看下每秒读写请求数确定是读造成的瓶颈还是写的问题,如果是的话是周期性问题还是一直持续的io压力,看下每秒扫描扇区看下是不是随机读写太严重了,看下每次服务耗时时长来确定是不是并发量过大的问题。找出可能的问题方向再去寻找造成问题的源头,比如说周期性io负载过高是不是mysql中一次性刷新过多数据,或者一次性提交过多事务导致日志写入量过大,可以通过show variables like ‘innodb%’查看变量设置,也可以show processlist看各个线程的状态,看一下排名前几状态是什么来确定原因
二.MySQL 部分
1. 是否了解过数据库索引?大概原理和实现是怎样的,谈谈mysql的索引类型?
答案:
索引是一种特殊的文件包含着对数据表里所有记录的引用指针。使用索引就是为了提高效率。如果有一大堆数据让你去检索其中某一条,
比如学生成绩单,按照学号去査考试成绩,最常见的思路是从头査到尾,但是如果数据量很大,当然査起来很慢。但是如果这些数据排
好顺序,你还需要从头査到尾么?二分法査起来最快,先査中间,然后看学号是大还是小,然后递次往前或往后二分査找,理解这一点,
数据索引对査询效率的影响就豁然开朗了。Mysql索引有如下类型:
普通索引:唯一任务是加快对数据的访问速度
主索引:为主键字段创建一个索引
唯一索引:唯一索引可以保证数据记录的唯一性
2. mysql有哪些存储引擎,大概说说区别
答案:mysisam和innoDB,区别参考第21套第6题。
3. 简要阐述一下mysql复制原理答案参考第16套12题
4. 如何列出所有数据库?如何列出某个数据库内所有表?如何删除表?数据库如何删除数据库?如何切换到某个数据库并在上面工作?
答案:
列出所有库show databases:
列出某个数据库内所有表use db;show tables;
删除表drop table tbl;
删除库drop databae db;
切换库use db;
5在不影响MySQL正常服务的情况下,如何导出MySql数据。
答案:mysqldump -uroot -p db > 1.sql
6.如何优化MySql。
A. 架构层:
做从库,实现读写分离,如果请求很大,可以考虑一主多从,或者分库分表。
B. 系统层次:
增加内存:
给磁盘做raidO或者raid5以增加磁盘的读写速度;
可以重新挂载磁盘,并加上noatime参数,这样可以减少磁盘的i/0;
C. MySQL本身调优:
(1) 如果未配置主从同步,可以把bin-log功能关闭,减少磁盘i/〇
(2) 在my.cnf中加上skip-name-resolve,这样可以避免由于解析主机名延迟造成mysql执行慢
(3) 调整几个关键的buffer和cache•调整的依据,主要根据数据库的状态来调试。如何调优可以参考E.
D. 应用层次:
査看慢査询日志,根据慢査询日志优化程序中的SQL语句,比如增加索引F.调整几个关键的buffer和cache
1) key_buffer_size首先可以根据系统的内存大小设定它,大概的一个参考值:1G以下内存设定128M; 2G/256M: 4G/384M:8G/1024M;
16G/2048M.这个值可以通过检査状态值Key_read_requests 和Key_reads,可以知道key_buffer_size 设置是否合理。比例
key_reads/key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOWSTATUS LIKE
‘key_read%’获得)。注意:该参数值设置的过大反而会是服务器整体效率降低!
2) table_〇pen_cache打开一个表的时候,会临时把表里面的数据放到这部分内存中,一般设置成1024就够了,它的大小我们可以通过
这样的方法来衡量:如果你发现open_tableS 等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值
了(上述状态值可以使用SHOWSTATUS LIKE ‘Open%tables’获得)•注意,不能盲目地把table_cache设置成很大的值。如果设置得
太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
3) Sort_buffer_siZe査询排序时所能使用的缓冲区大小,该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共
排序缓冲区大小为100 X 4 = 400MB•所以,对于内存在4GB左右的服务器推荐设置为4-8M。
4) read_buffer_size读査询操作所能使用的缓冲区大小*和sort_buffer_size —样,该参数对应的分配内存也是每连接独享!
5) join_buffer_size联合査询操作所能使用的缓冲区大小,和sort_buffer_size—样,该参数对应的分配内存也是每连接独享!
6) myisam_sort_buffer_size这个缓冲区主要用于修复表过程中排序索引使用的内存或者是建立索引时排序索引用到的内存大小,一般4G
内存给64M即可。
7) query_cache_size MySQL査询操作缓冲区的大小,通过以下做法调整:SHOWSTATUS LIKE ‘Qcache%’:如果
Qcache_lowmem_prunes该参数记录有多少条査询因为内存不足而被移除
出査询缓存•通过这个值,用户可以适当的调整缓存大小。如果该值非常大,则表明经常出现缓冲不够的情况,需要增加缓存大
小:Qcache_free_inemory:査询缓存的内存大小,通过这个参数可以很淸晰的知道当前系统的査询内存是否够用,是多了,还是不够用,
我们可以根据实际情况做出调整。一般情况下4G内存设置64M足够了,
8) thread_cache_size表示可以重新利用保存在缓存中线程的数,参考如下值:1G _>8 2G — > 16 3G —> 32 >3G — > 64
除此之外,还有几个比较关键的参数:
9) thread_concurrency这个值设置为cpu核数的2倍即可
10) wait_timeout表示空闲的连接超时时间,默认是28800s,这个参数是和interactive_timeout 一起使用的,也就是说要想让
wait_timeout生效,必须同时设置interact ive_timeout,建议他们两个都设置为10
11) max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。与性
能并无太大关系。为了避免一些错误我们一般都设置比较大,比如说10000
12) max_connections最大的连接数,根据业务请求量适当调整,设置500足够
13) max_user_connections是指同一个张号能够同时连接到mysql服务的最大连接数。设置为0表示不限制。通常我们设置为100足够
7. JDBC操作数据库的基本流程是什么
答案:JDBC(Java Data Base Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,
它由一组用Java语言编写的类和接口组成# JDBC操作mysql的基本流程为:加载数据库驱动并建立到数据库的连接一执行SQL语句-处理
结果一从数据库断开连接释放资源•
8. 如何确定MySQL是否处于运行状态?
答案:ps aux|grep mysqld査看是否有进程,netstat -lnp Igrep mysqld査看是否有监听端口。
以xx 结尾
grep "xxx.log$" xxx
査找当前路径下文件名包含test的所有文件
find . -name "*test*"
输出当前服务器上的时间信息,格式为YYYYMMDD-HH:MM:DD date +%Y%m%d-%T
telnet 远程端口是否开通
0 3 * * 1-5 务每周一到周五凌晨3点执行/home/imix下的app.sh脚本
1. 说一下公司多少台服务器,是什么架构
答案:有7台服务器,lnmp+nginx负载+keepalived,其中2台keepalived+2台nginx/php-fpm+2台mysql (—主一从)+NFS (上面兼
着跑监控、备份〉
nginx 优化参数
A. worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数(如,2个四核的cpu计为8)。
B. worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000
01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu»
C. worker_rlimit_n〇nie 65535:这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数与进程数相
除,现在在linux2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535,这是因为nginx调度时分配请求到进
程并不是那么的均衡,所以假如填写10240,总并发置达到3-4万时就有进程可能超过10240 了,这时会返回502错误。
D. use epoll;
使用epoll的I/O模型
E. worker_connections65535:每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为
worker_processes*worker_connect ions。
F. keepalive_timeout 60; keepalive 超时时间。
G.client_header_buffer_size4k;客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过lk,不过由于一般系统分页都要大于lk, 所以这里设置为分页大小。
H. open_file_cachemax=65535 inactive=60s;这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数置,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
I. open_file_cache_valid 80s;这个是指多长时间检査一次缓存的有效信息。
J. open_file_cache_min_uses 1; open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打幵的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
提高性能和并发数,需要优化哪些内核参数答案:
net. ipv4. tcp_max_tw_buckets = 6000 //timewait 的数童,软认是180000*
net. ipv4. ip_local_port_range = 1024 65000 //允许系统打开的端口范围.
net. ipv4. tcp_tw_reuse = 1 //开启重用。允许将HME-WAIT sockets 重新用于新的TCP 连接。
net. ipv4. tcp_syncookies = 1 //开启SYNCookies,当出现SYN等待队列溢出时,启用cookies来处理。
net. ipv4. tcp_max_orphans = 262144 //系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后
net. ipv4. tcp_max_syn_backlog = 262144 //记录的那些尚未收到客户端确认信息的连接请求的最大值•对于有128111内存的系统而
言,缺省值是1024,小内存的系统则是128。net. ipv4.tcp_synack_retries= 1 //为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net. ipv4. tcp_syn_retries = 1 //在内核放弃建立连接之前发送SYN包的数置。
net. ipv4.tcp_keepalive_time = 30//当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2小时
Nginx和lvs负载均衡比较
l)lvs的特点:
A. 抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络ip层仅做请求分发之用,没有流量,所以在效率上基本不霈要太过考虑。在我手里的lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2. 4内核的承载能力已到上限,内存和cpu方面基本无消耗。
B. 配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不箱要经常去触碰它,大大减少了人为出错的几率。
C. 工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故陣的话,lvs会自动判别,所以系统整体是非常稳定的。
D. 无流量,上面己经有所提及了。lvs仅仅分发请求,而流童并不从它本身出去,所以可以利用它这点来做一些线路分流之用•没有流童同时也保住了均衡器的10性能不会受到大流童的影响。
E基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。
另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配
方式则会丢掉一台机•目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙.
2) Nginx的特点是:
A. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS 了。
B. Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一:相反LVS对网络稳定性依赖比较大,这点本人深有体会:
C. Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来•LVS 的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
D. 可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
E. Nginx可以通过端口检测到服务器内部的故陣,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url 来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故陣,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满,
F. Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流童的环境中稳定性也很好。
G. Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
H. Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx 的就只有lighttpd 了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃.
I. Nginx也可作为静态网页和图片服务器,这方面的性能也无对手•还有Nginx社区非常活跃,第三方模块也很多。
J. Nginx新版本己经支持代理tcp各种协议,不再仅仅局限在代理http、https以及email,
zabbix监控哪些项目,模板是不是自己写的,触发报警有哪些,阀值都是多少
答案:
监控了CPU使用、系统负栽、内存剩余、磁盘使用百分比、mysql主从、mysql队列数量、网站访问纛、网卡流董、web状态码,有自己写的自定义监控脚本•触发报警的有系统负栽(当高于20报警)、磁盘使用百分比(高于90%报警)、mysql主从是否正常(不正常告瞥)、mysql队列数置(髙于400报警)、网卡流置(高于100M报警)等等
mysql两种引擎的区别,innodb原理,主从原理
1) myisam引擎和innodb引擎,两者的区别是:
MylSAM不支持亊务,而InnoDB支持
• InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会畎认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个亊务去提交*
InnoDB支持数据行锁定,MylSAM不支持行锁定,只支持锁定整个表•即MylSAM同一个表上的读锁和写锁是互斥的,MylSAM并发读
写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以MylSAM不适合于有大量査询和修改并存的
情况,那样査询进程会长时间阻塞。因为MylSAM是锁表,所以某项读搡作比较耗时会使其他写进程饿死。
InnoDB支持外键,MylSAM不支持。
InnoDB的主键范围更大,最大是MylSAM的2倍。
InnoDB不支持全文索引,而MylSAM支持•全文索引是指对char、varchar和text中的每个词(停用词除外)建立倒排序索引• MylSAM
的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。
MylSAM支持GIS数据,InnoDB不支持•即MylSAM支持以下空间数据对象:
Point,Line, Polygon, Surface 等。
没有where的count(*)使用MylSAM要比InnoDB快得多•因为MylSAM内罝了一个计数器,count(*)时它直接从计数器中读,而InnoDB
必须扫描全表。所以在InnoDB上执行count(*) 时一般要伴随where,且where中要包含主键以外的索引列。为什么这里特别强调“主键以
外”?因为InnoDB 中primaryindex 是和raw data 存放在一起的,而secondaryindex 则是单独存放,然后有个指针指向primary
key•所以只是count (*)的话使用secondaryindex扫描更快,而primary key则主要在扫描索引同时要返回raw data时的作用较大
innodb原理
0. php优化参数有哪些,fastcgi设置是多少,动态还是静态答:
A. php. ini安全配置,禁掉危险的函数disable_functions
(exec,system, passthru, error一log, ini_alter, dl, openlog,syslog, readlink,symlink, link, leak, fsockopen, proc_open,
popepassthru,chroot,scandir,chgrp,chown, escapeshellcmd, escapeshellarg,shell_exec, proc_get_status, popen)
B. php. ini配置曰志
display_errors =默认Off [On]打开错误日志
error_log=/usr/local/php/logs/php一errors, log error_reporting=E_ALL &^E_NOTICE
C. Php. ini 中定义open_basedir = /data/www:/tmp 白名单目录
D. Php-fpm.conf中配置慢执行日志
E. Php-fpm.conf 定义max一children
F. 问题中的fastcgi指的就是这个fpm配置,最大进程数(max_children)为300,动态(dynamic)
cc攻击和ddos攻击答案:先来说一下什么是cc攻击和ddos攻击
https://www.cnblogs.com/sochishun/p/7081739.html
https://www.cnblogs.com/mr-amazing/p/4424581.html
DDoS攻击的原理到底是什么呢?
DDoS全称:分布式拒绝服务。信息安全的三要素——“保密性”、“完整性”和“可用性”中,拒绝服务攻击,针对的目标正是“可用性”。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
拒绝服务攻击问题一直得不到合理的解决,目前还是世界性难题,究其原因是因为这是由于网络协议本身的安全缺陷造成的,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接
CC攻击的原理又是什么呢?
CC攻击全称Challenge Collapsar,中文意思是挑战黑洞,因为以前的抵抗DDoS攻击的安全设备叫黑洞,顾名思义挑战黑洞就是说黑洞拿这种攻击没办法,
新一代的抗DDoS设备已经改名为ADS(Anti-DDoS System),基本上已经可以完美的抵御CC攻击了。
CC攻击的原理是通过代理服务器或者大量肉鸡模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。CC不像DDoS可以用硬件防火墙来过滤攻击,CC攻击本身的请求就是正常的请求。
我们都知道网站的页面有静态和动态之分,动态网页是需要与后台数据库进行交互的,比如一些论坛用户登录的时候需要去数据库查询你的等级、权限等等,当你留言的时候又需要查询权限、同步数据等等,这就消耗很多CPU资源,
造成静态网页能打开,但是需要和数据库交互的动态网页打开慢或者无法打开的现象。这种攻击方式相对于前两种实现要相对复杂一些,但是防御起来要简单的多,提供服务的企业只要尽量少用动态网页并且让一些操作提供验证码就能抵御一般的CC攻击
DDoS攻击打的是网站的服务器,而CC攻击是针对网站的页面攻击的,用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC),网络层就是利用肉鸡的流量去攻击目标网站的服务器,针对比较本源的东西去攻击,服务器瘫痪了,
那么运行在服务器上的网站肯定也不能正常访问了。而应用层就是我们用户看得到的东西,就比如说网页,CC攻击就是针对网页来攻击的,CC攻击本身是正常请求,网站动态页面的正常请求也会和数据库进行交互的,当这种"正常请求"达到一种程度的时候,服务器就会响应不过来,从而崩溃
DDoS攻击原理:
通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人的通讯
. 对于linux主机的cpu负载使用,什么情况下user的比例升高,什么情况下system的比例升高,请联系实际举例。
答案:在Linux系统里面跑的用户安装服务比较忙的时候,会导致user的比例升高,比如mysql服务、php服务等。同样,当进程比较
忙,比如php使用非常频繁,子进程非常多的时候,会导致进程切换频繁,system的比例就会升高
在不umount的情况下,如何重新设置mount的参数 :mount -o remount
source就是让script在当前shell内执行、而不是产生一个sub-shell来执行。exec 也是让script在同一个行程上执行,但是原有行程则被结
束了•简而言之:原有行程会否终止,就是exec与source/fork的最大差异了
. 显示24小时前的内容find /tmp/ -mtime +1
linux 优化参数(硬件)
1.cpu
2. 内存(增加内存)
3. 存储(使用raid,使用ssd)
4. 网卡(使用千兆网卡,或者双网卡绑定)
【系统方面】
1.内核参数优化(网络相关、内存相关、缓冲缓存相关)
2. 文件系统方面(分区调优,格式化时根据存储文件特性,指定合适的块大小,noatime, 日志隔离,软raid,有效使用/dev/shm,关闭
不必要的服务)
3.cpu优化(进程绑定,中断绑定)
numa 架构cpu: http://blog.csdn. net/jollyjumper/article/details/17168175
taskset把进程和cpu绑定
http://blog.csdn. net/ttyttyttyl2/article/details/11726569 【应用程序方面I
1. nginx、apache、php-fpm、mysql、tomcat、squid等应用,是可以通过调节各个参数获得性能优化的。
2. web优化,比如可以把用户请求合并(js、css合并),使用cdn加速静态页访问速度,把图片文档压缩减少带宽传输,
3. 优化网站程序【架构方面】
1. 使用简单并且稳定的架构方案
2. 多使用缓存
filter INPUT FORWARD OUTPUT
nat PREROUTING POSTROUTINGOUTPUT
mangle PREROUTING INPUT FORWARD OUTPUT POSTROUTING
linux 运行级别 0-6
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
21 ftp 22 ssh 23 telnet 25 smtp 110 pop3 123 ntp 143 imapv2 873 rsync
修改时间大于30天的 *.log 删除 fined / -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
find / -type f -size +100k -exec mv {} xxx \;
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-P INPUT DROP
-I INPUT -p tcp --deport 22 -j ACCEPT
mysqldum -uroot -pxxx -hip -S xxxx.sock databse > xxx.mysql
< xxx.sql
iptables -t nat -A PROROUTING -p tcp -s ip --dport 80 -j REDIRECT --to-dport IP:PORT
硬件监控的命令
cpu top uptime w vmstat 1
free -m
df -h
网络 iftop nload sar -n dev
0 6-12/2 * 11 * /usr/bin/httpd.sh
tar zcvf /home/wang.tar.gz /home/stu/wang
临时修改主机名 永久修改 /etc/sysconfig/network HOSTNAME= hostnamectl set-hostname xxx
无法创建文件,使用df -h 看磁盘空闲 df -i 看indoe 是否消耗 删除小文件
zabbix 监控特点
1) zabbixserver:负贵接收agent发送的报告信息的核心组件,所有配置、统计数据及搡作数据都由它组织进行:
2) database storage:专用于存储所有配置信息,以及由zabbix收集的数据:
3) web interface:zabbix 的GUI 接口:
4) proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力:
5) agent:部署在被监控的主机上,负贵收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;
另外,zabbixserver、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置。
一个监控系统运行的大概的流程是这样的:
agentd需要安装到被监控的主机上,它负贵定期收集各项数据,并发送到zabbixserver 端,zabbixserver将数据存储到数据库
中,zabbix »eb根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种棋式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据
【主动监测】通信过程如下:
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems 数据值server或者proxy•很多人会提出疑问:
zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试.
分两个部分:
获取ACTIVE ITEMS列表
Agent打开TCP连接(主动检测变成Agent打开)
Agent请求items检测列表Server返回items列表Agent处理响应关闭TCP连接Agent开始收集数据主动检测提交数据过程如下:
Agent建立TCP连接Agent提交items列表收集的数据Server处理数据,并返回响应状态关闭TCP连接【被动监测】通信过程如下:
Server打开一个TCP连接
Server 发送请求agent, ping\n
Agent接收到请求并且响应1
Server处理接收到的数据1
关闭TCP连接
这里,有人可以看出来,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时, 就会出现server端性能问题了•还有人会问,那
实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1) 新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式9
2) agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可
以部分使用主动,部分使用被动模式
恶意ip 封闭
iptables -A INPUT -s ip -p tcp --dport 80 -j DROP
配置文件封闭 deny ip
重要的linux 内核参数优化(网络相关、内存相关、缓冲缓存相关)
net. ipv4. tcp_fin_timeout表示套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的事件,默认值是60秒
net. ipv4. tcp_tw_reuse表示开启重用。允许将TIME-WAIT sockets重新用于新的tcp链接,馱认值为〇,表示关闭
net. ipv4. tcp_tw_recycle 表示开启tcp 连接中TIME-WAIT socket 的快速回收net. ipv4. tcp_syncookies表示开启SYNCookies功能。
当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,Centos5系列默认值为1,表示开启,因此这个参数也可以不添加
net. ipv4. tcp_keepalive_time 表示当keepalive 启用时,TCP 发送keepalive 消息的频度。驮认是2小时,建议改为10分钟
'' 所见即所得 "" 有变量会扩展解析
find /data -type f -name "*.log" -mtime +30 -size +20k -perm +001 | xarges -i cp {} /data/xxx
有一个10G大的apache访问日志,要求找出访问/stat. php面页次数大于10000次的前100 个IP *
思路:使用 split -b 1M inout prefix 分割成小文件
对每一个小文件求该url访问IP 次数保存 全部整理去重计算
得到的ip 去重 ,根据ip 搜索次数累加 ,加完对比
mysql某张表数据总置到1G后,査询就很慢,考虑一下都有那些原因?如何优化?答案:数据总置超过1G,说明该表行数己经巨量,可
能己经达到了千万级,每次査询,都要全部通历,耗费时间一定不会短。如果没有给该表创建合适的索引,那一定会査询数秒,甚至几
十秒。增加索引会加快査询速度。如果增加索引后还慢,那需要考虑把该表引擎转换为innodb,也可以做一个分表的操作。
工作中实际问题
1,用户登陆
场景:服务器没有做任何操作,网站(discuz)打开很快,但就是用户不能登录。这个问题是突然出现的,之前一切都正常。
原因分析:网站访问没有问题,说明网络、服务器负载、数据库都是正常的,登录不上有可能是连不上数据库,无法验证,也有可能是
session无法保存。第一种情况己经排除,因为网站访问正常,说明数据库是没有问题的,那就是第二种情况了,session如果没有做特殊
处理,默认是存到了服务器的/tmp/目录下,它不能保存只有一个可能,那就是服务器磁盘满了。磁盘满的问题经常出现,但往往被我们忽视
解决:磁盘满是因为日志没有做切割,时间久了日志把磁盘撑爆。解决这问题,很容易就是针对这日志做个切割,然后每天删除一周以前的
2,场景:网站突然不能访问了,或者说网站访问很慢,很卡
排査:首先要査网络,看看服务器的网络是否正常,是否有丢包。再査域名解析是否有问题
然后近一步査服务器是否有负载,如果有负载,先用vrastatl确定瓶颈点,是cpu 还是内存,还是磁盘 如果是php导致,那就去分析php的慢执行日志,通过曰志再分析执
行慢的代码,曾经我就遇到过一次,php执行很慢,因为网站程序中有调用一个第三方网站,结果第三方网站换了ip,而我们的网站写了
hosts,也就是说人家己经变了ip,而我们还是访问旧的ip,旧ip都不存在了,那肯定访问会出问题。再一种可能,就是raysql执行慢导致
php执行慢。而排査mysql问题,就得借助慢査询日志和show full processlist•针对性地去优化mysql即可。我再说一种可能,那就是攻
击•如何判断出是攻击呢?通过査看访问日志和tcpdump抓包•一旦确定了是攻击,那就定位了问题。有的攻击,比如cc,我们是可以通
过iptables封ip,或者根据user_agent找规律,从而通过user_agent限定来防。但遇到大流置的udp flood的ddos攻击,我们就没办法
了,只能接入第三方带防护的CDN服务,这种服务代价十分高昂。
工作中有过什么样的误操作,请列两件以上
1)误删除配置文件
场景:至于什么配置文件,大家可以随便去假设了,可以是nginx,可以是niysql也可以是php-fpm的。删除配置文件,后果还是蛮严重的
•服务直接启动不了,网站直接挂掉。
解决:如果平时养成备份数据、备份配置文件的习惯,我相信这个问題不是啥大问题,顶多就是服务中断一两分钟。但如果没有备份配置
文件,那就悲剧了,只能自己重新配置,或者从其他机器拷贝参考的配置过来,但这个耗费的时间肯定是很久的
如何避免:对于重要的配置文件,我们一定要制定一个备份方案,比如每天备份一次•另外,对于配置文件,我们修改之前也应该要先备
份,然后再修改,以免更改完后不正常,可以快速恢复。再一个,比如nginx,我们修改完一定要先检査配置文件的语法是否正常,再去重
启或者重新加载服务
解决:还好所有服务器的root密码都还记得,而且有对authorized_keys做备份,剩下的事情就是通过远程控制卡(戴尔的服务器是支持
的)登录机器,这个就相当于我们直接到机房,在机房登录服务器,因为root密码有记录,顺利进入系统,并恢复公钥文件。亊后想
想,如果没有对authorized_keys做备份,如果不知道root密码,如果没有远程控制卡,如果机房远在他乡(美国),如果机房没有人帮
忙搡作……你懂的。
避免:为了避免这样的事情再次发生,我对authorizecLkeys文件做了特殊处理,加上了a 权限,这样避免了误删除•另外安全起见,每天
也会做一个备份,对所有服务器的root密码每隔一定时间就做一次更改
是568B,线序一1白橙、2橙、3白绿、4蓝、5白蓝、6绿、7白掠、8掠:
568A,线序一1白绿、2绿、3白橙、4蓝、5白蓝、6橙、7白棕、8棕
pop3 110,smtp 25,DNS 53,win 远程3389,DHCP 67
6. 网卡MAC地址长度是6
査看编辑本地策略,可以在开始/运行中输入(gpedit.msc)
手动更新DHCP租约,可使用ipconfig命令,加上参数b /renew
ICMP在沟通之中,主要透过不同的类别(Type)与代码(Code)让机器来设别不同的连线状态
响应请求(Type=8)和应答(Code=0) 目标不可到达报文(Type=3 主机不可达 协议不可达 端口不可达
什么是Cache?什么是Buffer?
Cache叫做缓存而Buffer叫做缓冲。在硬件概念中,Cache的用途是连接两种速度不同的设
备,比如寄存器和内存、CPU和PCI-Bus、IDE总线和硬盘。Buffer是一种数据预存取的方式,它用于临时存储数据并以与接收速度不同的速度传输。Buffer的更新方式可以是按时间间隔自动刷新,而Cache则更讲宄“命中率”,将当前时间段使用频繁的少量数据放到高速设备中方便读写
IS0/0SI 7层模型和TCP/IP四层协议都是什么?并简单画出二者间每层的对应关系及每层运行的协议IS0/0SI TCP/IP 协议答
1) 开放系统互连参考模型(Open System Interconnect简称0SI)是国际标准化组织(ISO) 和国际电报电话咨询委员会(CCITT)联合制定的
开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输
层、会话层、表不层和应用层
2) TCP/IP(Transmission Control Protocol/Internet Protocol)中译名为传输控制协议/ 因特网互联协议,又名网络通讯协议,是
Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因
特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通
俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地•而IP是给因特网的每
一台联网设备规定一个地
7 4
应用 tftp nfs telnet snmp dns
表示
会话 应用层
传输 传输 tcp udp
网络 网络 ip icmp igmp arp rarp
数据链路层 链路层
物理层
grep -E -v '#|;' grub2.cfg.bk
grep -v '[#;]' grub2.cfg.bk
cifs 挂载
:mount -tcifs-〇username=seker, password=passwd //192. 168. 1. 10/share /mnt/share
cat /proc/cpuinfo ##査看cpu 信息
cat /proc/meminfo ##査看内存信息,也可以使用free -m
cat /proc/swaps ## 査看swap 分区信息
如何修改Linux主机名(不重启的情况下)指出都要修改那些文件即可,写出各文件的绝对路径
hostname aminglinux 临时修改 vi /etc/sysconfig/network
SAMBA服务器四种共享方式的区别:
share:用户访问Samba Server不箱要提供用户名和口令,安全性能较低。.
user: Samba Server共享目录只能被授权的用户访问•由Samba Server负贵检査贱号和密码的正确性。账号和密码要在本Samba Server
中建立。
server:依靠其他WindowsNT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把
所有的Windows用户和口令集中到一个NT系统上,使用WindowsNT进行Samba认证,远程服务器可以自动认证全部用户和口令,如
果认证失畋,Samba将使用用户级安全樓式作为替代的方式。domain:域安全级别,使用主域控制器(PDC)来完成认证
19. 更改和添加SAMBA服务器登录用户的密码命令是什么?
答:修改smb服务器口令使用smbpasswd命令,命令格式如下:srabpasswd用户名
添加smb服务器登陆用户使用下面两条命令:useradd 或adduser
然后将passwd文件导入samba服务器,命令如下:
cat /etc/passwd Inksmbpasswd.sh > /etc/samba/smbpasswd
df -h 查看分区大小
du -sh /var/log 目录文件
unzip
写一条sql,査询该表中Stationld为6673的所有信息,并按照callid从大到小排列•
select * from 表 where stationid = 6673 order by xx desc 降序
简述SQL事务日志的作用?
答:事务日志是一个与数据库文件分幵的文件。它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库棋
式变化.事务日志还称作前滚日志或重做日志。事务日志是备份和恢复的重要组件,也是使用SQL Remote或[复制代理]复制数据所必需
的。
在缺省情况下,所有数据库都使用事务日志。事务日志的使用是可选的,但是,除非您因特殊原因而不使用,否则您应始终使用它。运行
带有事务日志的数据库可提供更强的故障保护功能、更好的性能以及数据复制功能。
数据库备份类行
1) 根据服务器是否在线: 冷备份,即服务器不在线,离线备份,cold backup 热备份,即在线对服务器做备份,hot backup 温备份:warm backup,可以读,
不能写
2) 根据备份的数据集:
完全备份:full backup 部分备份:partial backup
3) 根据备份的接口:直接备份数据文件还是通过mysql导出数据物理备份:直接复制归档数据文件的备份方式
优点:备份快
缺点:如果备份的数据源就是损坏的,则备份出的数据也是无法恢复的逻辑方式:吧数据从数据库提取出保存为文本文件优点:能备份
出来的数据就能恢复
缺点:备份空间大,恢复慢,无法保证浮点数的精度,而且要重建索引,站CPU资源
4) 根据备份时备份整个数据还是仅备份变化的数据完全备份
手动或执行任务执行自上次或首次完全对数据的一次全部备份,如果数据较多会占用较大的时间和空间,但是一旦出现数据丢失就要用到
完整备份增鼉备份
需要使用专业备份工具,涉及到完整备份后的数据时间识别,每次备份只会备份自上次备份之后到备份时间之内产生的数据,因此每次备
份相对差异备份的数据较小,但是恢复数据不是很方便且恢复较慢,但是备份较快差异备份
自上一次完整备份后产生的数据,即每次都会备份一次自上次完整备份以后产生的所有数据,因此备份的数据包大小会随着日期越来越
大,直到进行一次完整备份,但是差异备份结合完全备份恢复数据最为方便快捷
加电自检一>BIOS(Boot Sequence)—〉加载对应引导上的MBR(bootloader)—〉主引导设置加载其BootLoader—>Kernel 初始
化一>initrd一>/etc/init 进程加载/etc/initta
. 内核裁剪的意义?
答:内核剪裁更多的是为了更契合业务的需要,剪裁点不需要的功能,让性能更优化,其次是为了移植。
答:(BGP/BGP4: Border Gateway Protocol,边界网关协议)
BGP的优点
(1) 实现自治系统间通信,传播网络的可达信息。BGP是一个外部网关协议,允许一个AS 与另一个AS进行通信。BGP允许一个AS向其他
AS通告其内部的网络的可达性信息,或者是通过该AS可达的其他网络的路由信息。同时,AS也能够从另一个AS中了解这些信息。与距
离向童选路协议类似,BGP为每个目的网络提供的是下一跳(next-hop)结点的信息。
(2) 多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以
协调者一系列路由器,使这些路由器保持路由信息的一致性。
(3) BGP支持基于策略的选路(policy-base routing)。一般的距离向量选路协议确切通告本地选路中的路由。而BGP则可以实现由本地
管理员选择的策略。BGP路由器可以为域内和域间的网络可达性配置不同的策略。
(4) 可靠的传输。BGP路由信息的传输采用了可靠地TCP协议。
(5) 路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(path vector),即
去往该目的网络时霈要经过的AS的列表,使接受者能够了解去往目的网络的通路信息。
(6) 增量更新。BGP不痛要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文
只通告网络的变化信息。这种网络变化的信息称为增量(delta)。
(7) BGP支持无类型编制(CIDR)及VLSM方式。通告的所有网络都以网络前缀加子网掩码的方式表示。
(8) 路由聚集。BGP允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。
(9) BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。
4. 网络专线就是网络服务提供商给用户提供专用的信道,让用户的数据传输变得可靠可信,专线的优点就是安全性好,QoS可以得到保证
•不过,专线租用价格也相对较高,而且管理也需要专业人员。
简述专线主要有两种信道,主要是(物理专用)信道和(虚拟专用)信道,如果现在要搭建北京公司到广东分公司的网络专线,请在不考
虑成本的情况下,作出一套专用网络的方案。要求至少包含实现的思路和简单拓扑结构。
5. 简述VXLAN的原理
答:VXLAN(Virtual extensible Local Area Network)是一种将二层报文用三层协议进行封装的技术,可以对二层网络在三层范围进行扩
展。它应用于数据中心内部,使虚拟机可以在互相连通的三层网络范围内迁移,而不需要改变IP地址和MAC地址,保证业务的连续性。
VXLAN采用24bit的网络标识,使用户可以创建16M相互隔离的虚拟网络,突破了目前广泛采用的VLAN所能表示的4K个隔离网络的限
制,这使得大规模多租户的云环境中具有了充足的虚拟网络分区资源
通过proc文件系统可以找到id为235的进程文件在那个位置,打开了那些文件,启动的参数是什么,他的父进程id是多少,他的子进程
id有哪些?
答:ls-l/proc/235,其中exe软链接指向就是进程文件所在位置,fd目录下面就是打开的文件,cmdline文件内容可以看到启动参
数,status文件中的PPid就是父进程id,子进程id貌似没有直接的文件显示,但我们可以通过cat /proc/*/status来找到PPid为235 的进
程,即为它的子进程
打开转发
iptables -t nat -I PREROUTING -s -p tcp --dport 80 -j DNAT --to-destination ip :port
允许本机对外链接80端口(本机能连外界服务器为80) iptables-A OUTPUT -p tcp —dport 80 -j ACCEPT
-A INPUT -p icmp --icmp-type 8 -j DROP
在一台做nat的linux网关服务器上,怎么从系统中査看一个源ip为2. 3. 4. 5且目的端口为34512的链接,经过nat转换后的具体ip地址。
答:iptables-t nat-nvLlgrep 34521可以査看具体的规则,也可以抓包看,假如linux 网关服务器有两个网卡,ethO为外网网卡,ethl为
内网网卡。首先抓外网网卡,确定源ip 的通信端口
tcpdump -nn -i ethOhost 2.3. 4. 5 and port 34512,假如源端口为12345
然后再抓内网网卡tcpdump -nn -i ethl host 2. 3. 4. 5 and port 34512这样就可以确定具体的ip 了
如何监控Linux下,每个用户登录和操作日志
答:通过/var/run/utmp监控用户登录历史,通过各账户的history文件监控操作历史。还有一种方案,接入跳板机,比如jumpserver有
审计的功能
日志切割 年月日目录
#!/bin/bash Dl='date +%Y'
D2='date +%m'
D3='date +%d
Dir=Vmedia/raidlO/logs/nginxw
mkdir -p $D1/$D2/$D3
mv $Dir/access. log $Dl/$D2/$D3/access. log
/etc/init. d/nginx -s reload
php 优化参数
可以检查ini文件是否使用了安全方面的最佳实践
composer require psecio/iniscan
htps://github.com/psecio/iniscan
内存
php.ini中的memory_limit设定单个PHP进程可以使用的系统内存最大值 一共能分配给PHP多少内存?
512MB是绝对足够的。但是还是要看具体情况。
单个PHP进程平均消耗多少内存?
可以在命令行中执行top命令看查看运行中的进程的实时统计数据。
另外,可以在PHP脚本的最后调用memory_get_peak_usage()输出当前脚本小号的最大内存量
能负担起多少个PHP-FPM进程?
平均每个php进程要消耗15MB内存。根据分配的内存总量memory_limit来估算进程数
OPcache
该扩展用于缓存操作码。
先来分析每次HTTP请求时通常是如何处理PHP脚本的。
首先,nginx把HTTP请求转发给PHP-FPM,PHP-FPM再把请求交给某个PHP子进程处理。PHP进程找到相应的php脚本,读取脚本,把php脚本编译成操作码,然后执行编译得到的操作码,生成响应,发给nginx。
我们可以缓存编译php脚本得到的操作码,直接从缓存中读取并执行编译好的操作码。
我的php.ini中opcache的配置
opcache.memory_consumption = 64
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 4000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
opcache.fast_shutdown = 1
opcache.memory_consumption = 64
为缓存分配的内存量。根据应用大小来决定。
opcache.interned_strings_buffer = 16
用来存储驻留字符串的内存量。
什么是驻留字符串?PHP解释器在背后会找到相同字符串的多个实例,把这个字符串保存在内存中,如果再次使用相同的字符串,php解释器会使用指针。默认情况下,php驻留的字符串会隔离在各个php进程中。
这个设置能让php-fpm进程池中所有进程把驻留字符串存储到共享的缓冲区中,以便在php-fpm进程池中的多个进程之间引用驻留字符串。
opcache.max_accelerated_files = 4000
操作码缓存中最多能存储的php脚本个数,一定要比应用中文件数量大。
opcache.validate_timestamps = 1
检查php脚本的内容是否有变化。值为0则不检查。
文件上传
file_uploads = 1
upload_max_filesize = 10M
max_file_uploads = 3
在配置上传非常大的文件时,对nginx的client_max_body_size也要修改
最长执行时间
max_execution_time = 5 // s
也可以使用set_time_limit()来覆盖
处理会话
php的会话处理程序会把会话数据存储在硬盘中。其实可以使用memcached或redis存储在内存中。
安装连接memcached的PECL扩展来使用memcahced
http://pecl.php.net/package/memcached
修改配置
session.save_handler = 'memcached'
session.save_path = '127.0.0.2:11211'
缓冲输出
缓冲输出的目的:在较少的块中发送较多的数据
output_buffering = 4096
implicit_flush = false
确保输出大小是4或8的倍数
真实路径缓存
PHP会缓存应用使用的文件路径,这样每次包含或倒入文件时就不需要不断搜索路径了。
这个缓存叫真实路径缓存。
realpath_cache_size = 64k
在脚本末尾可以叫上print_r(realpath_cache_size())获得真实的路径缓存使用大小。
介绍MySQL数据库集群的几种方案,并详细说下每种方案的优缺点。
答:
1) 单纯的主从,从只作为数据备份,只有主提供服务。当主出现问题时,需要手动切换到从上,然后从提供服务,当原来的主恢复后,
还需要再做一次主从。这样原来的从就变成了主,原来的主就变成了从。
2) 主从,并且做读写分离。好处是,数据有两份,更加安全,而且两台机器都提供服务,减少了主机器的负担•但主宕机后,需要手动切
换角色,把写指向到从上面。主恢复后,也需要重新搭建主从。
3) 双主+heartbeat,这种方案更加安全,可以自动切换。双主架构比单纯的主从更加复杂,所以出现问题的可能性也更大了,监控主从状
态尤为重要。
4) heartbeat+drbd»这个方案和双主有点类似,只不过数据同步并不是mysql本身来做的,是系统级别的同步•当提供服务的mysql有问
题,可以自动切换到备用机器上*
6. MySQL创建数据库的命令,创建表的命令,插入语句的命令?
答:Create database test;
create table tablename ( columename columetype);
insert into tablename ( fieldl,field2, •••)Values(valuel,value2,…•);
7. MySQL备份命令?MySQL如何给root用户对mmc_user授权访问,密码为mmc_pwd,请写出命令?
答:mysqldump -uroot -p d > /data/d.sql
grant all on *.*to 1 ramc_user, localhost*identified by,mmc_pwd,;
8. MySQL忘记密码该如何操作呢?
答:修改配置文件,增加skip-grant,重启登入mysql mysql -uroot
然后使用mysql表use mysql 执行修改root密码
update userset password=password C d9436800000,) where user=*root*;
然后更改配置文件去掉skip-grant 重启后就可以用新密码登录了
监控数据库主从状态
1,检查数据库端口 数据库ip 数据库status 的IO 和sql show processlist
TIMEWAIT是怎么产生的
主动断开的一方,发送完最后一次ACK之后进入的状态。并且持续时间还挺长的 ,
为了TCP协议的可靠性,由于网络原因,ACK可能会发送失败,那么这个时候,被动一方会主动重新发送一次FIN,
这个时候如果主动方在TIME_WAIT状态,则还会再发送一次ACK,从而保证可靠性。那么从这个解释来说,2MSL的时长设定是可以理解的,MSL是报文最大生存时间,如果重新发送,一个FIN+一个ACK,再加上不定期的延迟时间,大致是在2MSL的范围
在HTTP1.1协议中,有个 Connection 头,Connection有两个值,close和keep-alive,这个头就相当于客户端告诉服务端,服务端你执行完成请求之后,是关闭连接还是保持连接,保持连接就意味着在保持连接期间,只能由客户端主动断开连接。还有一个keep-alive的头,设置的值就代表了服务端保持连接保持多久
HTTP默认的Connection值为close,那么就意味着关闭请求的一方几乎都会是由服务端这边发起的。那么这个服务端产生TIME_WAIT过多的情况就很正常了。
虽然HTTP默认Connection值为close,但是现在的浏览器发送请求的时候一般都会设置Connection为keep-alive了。所以,也有人说,现在没有必要通过调整参数来使TIME_WAIT降低了
sysctl net.ipv4.tcp_tw_reuse=1
sysctl net.ipv4.tcp_tw_recycle=1
sysctl net.ipv4.tcp_timestamps=1
tcp_tw_reuse
这个参数作用是当新的连接进来的时候,可以复用处于TIME_WAIT的socket。默认值是0。
tcp_tw_recycle和tcp_timestamps
默认TIME_WAIT的超时时间是2倍的MSL,但是MSL一般会设置的非常长。如果tcp_timestamps是关闭的,开启tcp_tw_recycle是没用的。但是一般情况下tcp_timestamps是默认开启的,所以直接开启就有用了。
如何搭建redis/memcached集群?讲述几种方案的优缺点答:来几个链接
1) rediscluster https://my.oschina.net/guol/blog/506193
2) codis 实现redis 集群http://www.jianshu.eom/p/f8e968e57863
3) magent 实现memcached 集群http://www.cnblogs.com/luotianshuai/p/5088581. html
2.Linux里面如何增加一条路由?格式是什么?需要保存吗,为什么?
答:使用route add
route add - net 192.168.1.0/24 gw 192.168.1.1
这条命令是临时的,重启后失效,写入 /etc/profile.d/xxxx.sh 参考http://daemonsau blog. 51cto.
com/340243/1600077
数据量大使用xtrabackup工具备份。Mysql权限分配,应遵循一业务一胀户,一账户一ip的原则,密
码复杂度要有•程序员不分配线上数据库权限,导数据、査询数据的操作由我们运维来完成
数据库备份 数据量少的时候 mysqldump
stat flie 三个时间
atime : 它代表着最近一次访问文件的时间,显示一个文件的内容或者运行一个shell脚本会更新文件的atime
atime:改变状态发生的情况 可用ls -lu命令查看
将分区mount的挂载的时候指定采用非relatime方式
atime小于ctime或者小于mtime的时候
本次的access time和上次的atime超过24个小时
mtime : 它代表着最近一次文件内容被修改的时间。可用ls -l 命令查看
ctime : 它代表着最近一次文件状态改变的时间 ,是status change time,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。可用ls -lc 命令查看
一个防火墙配置脚本,只允许远程主机访问本机的80端口iptables-P INPUT DROP
iptables-A INPUT -p tcp —dport 80 -j ACCEPT
iptables-A OUTPUT -p tcp —sport 80 -m state —state ESTABL1ISHEDISHED -j ACCEPT
忘记root密码,可以在启动时,编辑引导项,在initrd行最后加上1,进入单用户模式。使用chroot切换系统。然后使用passwd命令修改密
码。
1)两种模式prefork 模式
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作式类似于Apache 1.3•它适合于没有线程安全库,需要
避免线程兼容性问题的系统。它要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只霈要很少的配置指令调整。最重要的是将MaxClients 设置为一个足够大的数值以处理潜在的请求
高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销
小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数ThreadsPerChi Id指令,和控制允许建立的总线程数的MaxClients
指令。
2)査看apache支持的模块,使用apachectl -M
. 常见的FTP软件有哪些?Linux最常用的是?如何共享一个资源让他人使用用户名和密码访问?
答:常见及常用的有vsftpd,pureftp等。最常用的是vsftpd,可以使用samba服务共享 —个资源,让他人通过用户名密码来访问
道FTP协议有两种工作模式,说说他们的大概的一个工作流程
FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)•通常来说
这两个端口是21 (命令端口)和20 (数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之
处
(一)主动FTP
在主动模式下:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口
N+1,并发送FTP命令“portN+1”到FTP 服务器。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端
口N+1,进行数据传输。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1. 任何大于1024的端口到FTP服务器的21端口•(客户端初始化的连接)
2. FTP服务器的21端口到大于1024的端口。(服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4•大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
(二)被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式•这就是所谓的被动方式,或者叫做PASV,当客户端通知服
务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火垴过滤掉的
问题。
在被动棋式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口.然后向服务器发送
PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户
端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
对于服务器端的防火垴来说,必须允许下面的通讯才能支持被动方式的FTP:
1. 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2. 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
/root/server/log目录占用空间太大,新增加一块硬盘用于专门储存log文件,请问执行那些命令才能完成这个工作?要求不影响原有
程序运行,不重启机器
格式化应硬盘分区后挂载,到其他目录 /data
将旧日志转移到/data/newlog
3) rsync-az/root/server/log/ /data/newlog
4) mv/root/server/log /root/server/log. old
5) In -s/data/newlog /root/server/log
重新加载下服务生成日志文件
7) rm -rf /root/server/log. old
解析:大公司是不允许开发人员有正式线上服务器的权限的,他们平时只在开发服务器上做一些操作•当开发人员需要登录线上服务器
时,首先要问淸楚痛求,如果我们可以帮忙完成的工作,尽量我们来做。因为开发人员Linux命令并没有我们熟悉,万一误操作,影响还
是蛮大的。
万不得已时,我们尽量给他们开放一个普通账户,权限给到最低,若有需要root用户执行某个命令,那可以做一个sudo规则。
使用一条命令査看root目录下各文件夹占用空间大小?
答:du •sh /root/*
用vi编辑文件,需要把文中从21行到30行中所有的Vusr/local/"改为Vroot/•,用一条语句怎么实现?
答:进入vi,然后直接输入:21,30s/\/usr\/local/\/root/g
进程的基本状态有、、•答案:运行休眠停止
查询空行 grep -n "^$" file
lvs 工作模式
A. NAT
B. IPtunneling
C. DirectRouting
dns 既有tcp 又有udp
在Linux/Unix操作系统中当一个进程终止时,下面哪个信号会生成core文件 SIGQUIT
对mysql描述正确的是(C)
A. mysql不支持共享存储
B. mysql InnoDB引擎的读取性能不及MylSAM
C. mySql5. 5支持事务类型的主从同步
D. mysql经常用来存储大童的流失数据
配置管理工具 ansible
前流行的自动化配置管理工具有哪些,简述各其特点
Pupet、saltstack、ansible
1) puppetc/s构架服务端puppet master客户端puppet agent进程启动程序使用ruby 进程
有监听端口master 8140 agent 8139
原理agent客户端puppet,conf配置master服务端的IP地址、runinterval = 10(客户端每10秒向master发送请求接收执行)、listen =
true,当master和agent服务都启动后agent客户端自动发送一个认证到master服务器puppetcert list可以看到agent发来的认证请
求,需要master端sign (签名)后,master端才能开始对agent进行操作:文件发送、目录发送、服务开启/关闭、制定任务计划、执行
shell脚本puppetcert list -all —//査看己签名agent
master服务器的p叩pet目录下有三个目录environments manifests modules —开始都是空的
manifests下创建一个site, pp (系统默认)里面配置全局变童
modules下创建web模块,web模块包含三个子目录files manifeststemplates其实就是对应puppet下的三个目录
files—放分发的文件、目录
manifests—创建一个init. pp输入远程执行的操作命令将命令关联到site, pp上就可以了客户端agent会自动监控roaster的改动每l〇s做
出一次调整
2) saltstatck c/s 构架采用pathon 进程服务端是salt-master 客户端salt-minion 只有master端开启监控端口,而且是两个4505/4506
认证机制和puppet差不多salt-key査看认证key Accepted Keys:下的key对应的agent 都可以正常通信
puppet能实现的功能saltstack都能实现优于puppet的方面:
A可以直接对agent发送指令
salt’*’cmd. run’w’査看所有agent的负载情况
salt***test, ping
B grains用于对服务器进行分组
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip等。使用命令
salt ’test.com.cn’grains. Is 列出所有的grains 项目名字
salt ’test.com.cn’grains, items 列出所有grains 项目以及值
grains的信息并不是动态的,并不会时时变更,它只是在minion启动时收集到的。
grains可以做02置管理
举例单独对10台web服务器进行统一管理在在每个web服务器下vim /etc/salt/grains 添加role: web 重启salt-minion服务
在master服务器执行salt ~G reole:web cmd. run ’w’ —//实现对着10台web的单
独管理
3) ansible相比与前两个更加轻便
首先他不是c/s构架不需要客户端只要安装服务端就可以而且在/etc/ansible/hosts里直接可以对客户端进行分组也支持直接执行命令
ansible testhosts-m command -a ’w’--//testhosts 是我创建的分组
grant select on b.c to a@ip identified by "";
通常情况下,业务出现故陣应该怎样处理以及需要注意什么,请描述一下具体处理思路(10 分)
答:当业务出现故障时,第一,要分析出现故陣的状态或者报错信息,针对这些状态去确定 —个可能出现问題的点的范围。第二,到服务
器査看服务器本身的状态(比如负载、cpu、内存、磁盘等),査看对应服务的状态、日志等。第三,回想最近做过的服务器或者架构调
整、改动,因为故障很有可能是由于人为改动导致。总之,遇到问题时,具体问题具体分析,査看日志很关键,问题处理后要总结
linux 系统以文件形式访问设备
安装Linux系统对硬盘分区时,必须有两种分区类型:/和交换分区
编写的Shell程序运行前必须陚予该脚本文件执行权限
内核分为进程管理系统、内存管理系统、I/O管理系统和文件管理系统等四个子系统
1. 在Linux系统中,以文件方式访问设备。
2.Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。
3. 链接分为:硬链接和符号链接(也就是软链接)。
4. 某文件的权限为:d-rw-_r-_r-,用数值形式表示该权限,则该八进制数为:644 , 该文件属性是目录。
5. 前台起动的进程使用Ctrl+c终止。
6. 安装Linux系统对硬盘分区时,必须有两种分区类型:/和交换分区,
7. 编写的Shell程序运行前必须陚予该脚本文件执行权限。
8. 内核分为进程管理系统、内存管理系统、I/O管理系统和文件管理系统等四个子系统.
9. 唯一标识每一个用户的是用户ID和用户名。
10. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。
11. DHCP可以实现动态IP地址分配。
12 Ping命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络的连通性。
13.vi编辑器具有三种工作模式:一般模式、命令模式和编辑模式。
14. 可以用Is-al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占1位,表示文件类型,第二段占3
位,表示文件所有者对该文件的权限。
15. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现IP地址和主机名之间的转换。
16 CD-ROM标准的文件系统类型是iso9660 »
17.Linux使用支持Windows 9.X/2000长文件名的文件系统的类型是vfat #
18. 设定限制用户使用磁盘空间的命令是quota。
19在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是/etc。
20. 硬连接只能建立对文件链接。符号链接可以跨不同文件系统创建。
21. 套接字文件的属性位是s。
22. 结束后台进程的命令是kill。
23. 进程的运行有两种方式,即独立运行和使用父进程运行•
24. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps-aux•
25. 管道文件的属性位是p .
26. 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道•
27. 为脚本程序指定执行权的命令及参数是chmod a+xfilename •
28. 欲发送10个分组报文测试与主机abc. tuu. edu.cn的连通性,应使用的命令和参数是:ping abc. tuu. edu.cn -c 10 〇
29. DNS服务器的进程命名为named,当其启动时,自动装载/etc目录下的named,conf文件中定义的DNS分区数据库文件。
30. Apache服务器进程配置文件是httpd.conf *
31. 在Linux系统中,压缩文件后生成后缀为.gz文件的命令是gzip •
32. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入:w test, txt 〇
33. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有空格。
34. 检査己安装的文件系统/dev/had5是否正常,若检査有错,则自动修复,其命令及参数是fsck -a /dev/had5 •
35. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是Samba服务器。
36在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令dig •
37. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置/etc/hosts文件〇
38. 在vi编辑环境下,使用Esc键进行模式转换
39. 将/home/studl/wang目录做归档压缩,压缩后生成wang. tar. gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格
式tarzcvf /home/wang. tar. gz
/home/stud1/wang •
40. 在使用手工的方法配罝网络时》可通过修改/etc/sysconfig/network文件来改变主机名,若要配置该计算机的域名解析客户端,需配
置/etc/resolv.conf文件〇
41. Sendmail邮件系统使用的两个主要协议是:SMTP和POP ,前者用来发送邮件,后者用来接收邮件*
42. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址。
43. rm命令可删除文件或目录,其主要差别就是是否使用递归开关_r或-R。
44. mv命令可以移动文件和目录,还可以为文件和目录重新命名。
45. nfs协议用于实现Unix(/linux)主机之间的文件系统共享。
46. 用〉〉符号将输出重定向内容附加在原文的后面
48进行字符串査找,使用grep命令•
49. 使用*每次匹配若干个字符.
50. /sbin目录用来存放系统管理员使用的管理程序•
less 上下翻页
. 在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用D命令实现 shutdown - r now
—千万并发,你有哪些方案
答:1)接入CDN,把各种静态的请求全部转移到CDN上
2) 业务划分棋块,毎个模块再建立集群
3) 增加缓存层,减少数据库査询
4) 对数据库分库分表,建立一主多从架构,实现读写分离
性能不足,你如何调优?
答:1)如果可以,尽置更换ssd硬盘
2) 做raid提升性能
3) 若硬件不支持,可以再增加磁盘,然后多磁盘做软raid
4) 增加挂栽选项noatime
5) 在架构方面,增加缓存层
请描述SSH连接会话建立过程
A客户端向服务端发送一个连接请求
B第一次连接到服务器后,服务器会向客户端发送一个公钥(当我们第一次连一台主机时,客户端就有那个提示,是否接受远程远程服务
端发来的公钥),该公钥接受后会保存在〜/ssh/. know_hosts 文件中
C客户端会用服务端传送过来的公钥把密码加密,并发送到服务器D服务端拿到密码后,首先需要自己的私钥解密,验证密码是否正确E
密码正确,则双方建立连接,客户端会在本地生成一对密钥,对之后的数据进行加密传送基于密钥的过程和密码类似,只不过服务端验证
的是密钥而不是密码。
1. 某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤,如果发现磁盘满了, 需要重新挂载一块新硬盘,操作步骤?
答:发现磁盘只读,首先应该要把重要的文件做一个备份。然后使用fsck命令尝试修复,如果修复失败,再去尝试重新格式化磁盘分区。
磁盘满了,可以先找到哪些目录占用了空间,把不用的文件暂时删除,腾出一些空间,让服务恢复正常。然后安装新的磁盘,把满的磁盘
里面的数据挪一部分到新盘上,并做软连接目录指向新磁盘,这样可以保证原来的文件或者目录可以找到。
你们公司上线的流程是什么?真实环境上线一个论坛需要哪些步骤?
答:程序发布流程是,开发->测试->预发布->生产。上线论坛的步骤:购买服务器一>安装系统->搭建lnmp环境->购买域名->解析
域名->上传discuz代码->安装论坛
使用rpm命令安装、卸载、删除、更新ntp-0.7.12.x86_64.rpm这个软包。
答:
安装:rpm - ivh ntp-〇. 7.12.x86_64. rpm卸载:rpm - e ntp
更新:rpm - Uvh ntp-〇. 7.12.x86_64. rpm
. Mysql备份和恢复如何实现,你们公司的数据量多大,备份的策略是什么?
答:备份使用mysqldump备份成一个sql文件,恢复直接反向重定向sql文件即可*
我们公司数据量有几十G,使用的是xtrabackup备份的,每天备份一份冷备份,binlog日志每日备份,保留10天*
0.Linux下nfs在客户端无法挂载,请写出排査步骒?
答:査看网络联通性,査看端口是否畅通,可以的,临时关闭iptables涮试,检査轚务端rpcbind服务是否开启
100台服务器管理方式,详细描述答:
1) 登录,最好是使用跳板机统一管理登录信息,推荐jumpserver,juapserver支持命令审计、批置执行命令,安全性也很好。
2) 需要把机器登记到cmdb平台(管理服务器资源的一个平台),当然,juapserver里面也有这个功能。把机器针对业务、角色分组
3) 需要针对各个角色(web、db、缓存等)做标准化部署,方便后续的自动化管理
4) 针对所有机器,做安全加固(比如设定合适的iptables规則,不同的组,规則内容可H 也不一样)
5) 部署和配置监控中心
来源网上。侵删