一.nginx调优
https://blog.youkuaiyun.com/q87374/article/details/79448826
隐藏版本号和服务器类型;设置nginx运行用户;修改运行进程个数;限制最大打开文件数;事件处理模型(epoll);开启高效传输
设置链接超时时间。
二.Linux 操作系统与基础操作命令
https://blog.youkuaiyun.com/weixin_43215948/article/details/108307119
三.部署并维护DNS、DHCP、NFS、FTP 等网络基础服务;
(1)DNS:https://blog.youkuaiyun.com/weixin_43215948/article/details/106682312
(2)DHCP:https://blog.youkuaiyun.com/weixin_43215948/article/details/107086991
(3)基础服务:dns dhcp nfs vpn apache ftp 工作原理、nfs的三个模块的作用,dns的各种记录名称以及作用、dhcp的四个过程、apache虚拟主机的创建(有的面试官会要求现场写配置文件)、ftp的主动模式和被动模式
nfs的三个模块的作用
NFS并不是单独存在的,它和另外2个模块共同存在,试想两台网络当中的主机如何进行通讯,当然只有通过ip+port来发送数据。包括NFS在内,这三个模块分别是NFS,RPC,PORTMAP。NFS只负责将数据通过以文件系统的方式共享出去,并进行登录管理和权限管理,并不负责数据的传输,而数据的传输则有RPC来完成。试想远程客户端在进行链接的时候需要知道哪个端口可用,以便将可用的端口用于NFS数据传输(NFS的数据传输方式由端口来完成),而负责维护可用端口与远程主机的映射关系则是有PORTMAP的完成的。NFS的两个子模块,登录管理和权限管理分别是由rpc.nfsd和rpc.mountd这两个子模块来完成的。在nfs的启动代码当中可以看到这两个程序的存在。不难想出,NFS的工作流程是,远程客户端进行nfs请求,RPC获得请求,通知PORTMAP来获取端口号,然后PORTMAP将可用的端口号传给NFS、RPC,然后NFS模块再进行权限检验,如果有足够的权限,RPC就通过PORTMAP给出的端口进行数据传输,并通过该端口到达客户端。
四.熟悉shell 脚本的编写,如NFS文件系统的搭建;用grep,sed, awk 命令完成一些文件的处理;
10 #!/bin/bash
11 ping -c 1 172.25.254.10 &> /dev/null
12 [ $? -eq 0 ] && {
13 echo "ping is ok"
14 } ||{
15 echo "ping is not ok"
16 exit
17 }
18 [ `setenforce 0 &> /dev/null` -a `systemctl stop firewalld &> /dev/null`]
19 [ $? -eq 0 ] && {
20 echo "selinux and fierwall set success"
21 }||{
22 echo "selinux and firewalld set failed"
23 exit
24 }
25 rpm -q nfs-utils &> /dev/null
26 if [ $? -eq 0 ];then
27 echo "nfs-server has installed"
28 else
29 echo "you should install nfs-server"
30 dnf install nfs-utlis -y &> /dev/null
31 systemctl enable --now nfs-server &> /dev/null
32 echo "nfs-server install success"
33 fi
34 read -p "please input a share dir:" dir
35 if [ -e $dir ];then
36 echo "share dir $dir exist"
37 else
38 mkdir $dir
39 echo "share dir $dir create success"
40 fi
41 chmod 1777 $dir
42 read -p "please input share ip range:" iprange
43 read -p "please input permission(ro/rw):" permission
44 read -p "input 1 -> clear config,defaults is add:" choice
45 if [ $choice -eq 1 ];then
46 > /etc/exports
47 fi
48 cat >> /etc/exports <<EOF
49 $dir $iprange($permission)
50 EOF
51 systemctl restart nfs-server | grep active &> /dev/null
52 showmount -e 172.25.254.20 | grep $dir
53 [ $? -eq 0 ] && echo "share success" || echo "share fail"
54 echo "welcome for you next time"
文本三剑客:
- grep 文本过滤命令
- sed 行编辑器
- awk 报告生成器
grep命令详解查看:https://blog.youkuaiyun.com/qq_42014600/article/details/89850192
grep命令详解:
grep 匹配条件 处理文件
参数
-a 不要忽略二进制数据。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-i 忽略字符大小写的差别。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-s 不显示错误信息。
-v 反转查找。
sed命令详解查看: https://blog.youkuaiyun.com/ljzcom/article/details/79576361
awk命令详解:https://blog.youkuaiyun.com/jin970505/article/details/79056457
五.熟悉Python 的基础编程, 了解Django 框架, 用该框架搭建简单的web 系统;
六.熟悉主流的web 服务器如Apache、Nginx 的配置
七.熟悉ansible 与saltstack 自动化运维工具;
八.熟悉Zabbix 监控软件,实现对服务器的良好监控;
九. 熟悉主流的高可用架构(Nginx、Haproxy、LVS 负载均衡+keepalived)的部署;
十.熟悉配置memcache、tomcat、mysql、redis 等应用相关软件的部署及mysql 数据库的优化;
(1)memcache和redis的区别
Redis只使用单核,而Memcached可以使用多核,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis;
内存使用率。对于key-value这样简单的数据储存,Memcached的内存使用率更高。如果采用hash结构,Redis的内存使用率会更高。当然,这些都依赖于具体的应用场景。
关注数据持久化和主从复制时,只有Redis拥有这两个特性。如果你的目标是构建一个缓存在升级或者重启后之前的数据不会丢失的话,那也只能选择Redis。
Redis支持很多复杂的操作,甚至只考虑内存的使用情况,在一个单一操作里你常常可以做很多,而不需要将数据读取到客户端中(这样会需要很多的IO操作)。这些复杂的操作基本上和纯GET和POST操作一样快,所以你不只是需要GET/SET而是更多的操作时,Redis会起很大的作用。
对于两者的选择还是要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,我在项目里还是采用Memcached,它也足够的稳定可靠。如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择Redis。
1、存储方式:
Memcached 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
Redis有部分存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有RDB快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
2、数据支持类型:
Redis在数据支持上要比Memcached多的多。
3、使用底层模型不同:
新版本的Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4、运行环境不同:
Redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上
Redis 支持复杂的数据结构
Redis 相比 Memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, Redis 会是不错的选择。
5、Redis 原生支持集群模式
在 redis3.x 版本中,便能支持 Cluster 模式,而 Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。
6、性能对比
由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。而在 100k 以上的数据中,Memcached 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Remcached,还是稍有逊色。
7、Memcached还有如下缺点
key 不能超过 250 个字节;
value 不能超过 1M 字节;
key 的最大失效时间是 30 天;
只支持 K-V 结构,不提供持久化和主从同步功能。
个人总结一下,有持久化需求或者对数据结构和处理有高级要求的应用,选择Redis,其他简单的key/value存储,选择Memcached。
单纯 K-V 缓存的场景可以使用 MC,而需要缓存 list、set 等特殊数据格式,可以使用 Redis;
-
需要缓存一个用户最近播放视频的列表可以使用 Redis 的 list 来保存、需要计算排行榜数据时,可以使用 Redis 的 zset 结构来保存。
十一:熟悉计算机网络基础知识,如OSI 七层与TCP/IP 四层体系结构,TCP 的三次握手与四次挥手过程及状态;
网易互娱sre面试准备:
- 自我介绍;
- Linux 用的发行版,几个发行版之间的区别; 企业版 发行版centos
- Linux 常用命令;touch cd ls mkdir top ps uname vim chmod useradd netstate ping tcpdump free df du 等等
- top 中的 NI 意思; 用户进程空间内改变过优先级的进程占用CPU百分比
- Linux 服务器负载过高问题排查;
1.top命令查看该机器的负载状况
2.cd /proc/pid 查看对应高占用程序的位置
3.进入对应程序中查看日志,根据CPU和内存这两个因素分析
4.ps -ajxf 查看进程及其之下的线程,通过stat查看是否存在D僵尸进程
- OOM 情况诊断以及处理措施;内存溢出情况诊断
- Linux 服务器高负载情况下会对服务产生什么具体影响;
- iptables 的功能作用;
iptables 是一个用于 IP 访问控制的工具,可以通过 iptables 实现一些防火墙和 NAT 的功能,iptables 的 5 条链和 4 张表
- SSH 对应于 OSI 模型的哪层;
- TCP 三次握手过程叙述;
- TCP 四次握手过程中 client / server 都经历哪些状态;
- DDoS 攻击的原理,如何防范;
- 子网内主机 Ping 的过程及涉及的协议;
- ICMP 如何禁用?
- ARP 协议的作用及过程;
- Docker 子网内通信方式;
- Docker 的实现原理;
- 多个 Cgroup 是否可以对同一个进程加以限制;
- Dockerfile COPY ADD 的区别;
- 基于 Jenkins Gitlab 实现 CI/CD 流程的描述;
- 实习项目背景,参与的工作;
- 项目中拓扑关系动态维护/持久化相关的问题;
- 项目中处理异常情况;
- 对于微服务的理解,相比传统架构的比较,看法;
- 前端用的技术栈,前端打包技术;
- 用到的库,介绍一下使用时遇到的困难;
- 个人项目多租户隔离的实现机制;
- Prometheus 如何集成在项目中的;
- 反问 - Q:部门所在地/平时主要业务 A:广州/杭州为主,还有上海,负责网易游戏的运维&开发,涉及到业务SRE/基础架构SRE/数据库运维等…