linux优化
- 格式:docx
- 大小:1.01 MB
- 文档页数:28
HDFS配置参数及优化之实战经验(Linuxhdfs)HDFS优化之实战经验Linux系统优化⼀、禁⽌⽂件系统记录时间Linux⽂件系统会记录⽂件创建、修改和访问操作的时间信息,这在读写操作频繁的应⽤中将带来不⼩的性能损失。
在挂载⽂件系统时设置noatime和nodiratime可禁⽌⽂件系统记录⽂件和⽬录的访问时间,这对HDFS这种读取操作频繁的系统来说,可以节约⼀笔可观的开销。
可以修改/etc/fstab⽂件中noatime和nodiratime来实现这个设置。
如对/mnt/disk1使⽤noatime属性,可以做如下修改:$ vim /etc/fstab/ ext4 defaults 1 1/mnt/disk1 ext4 defaults,noatime 1 2/mnt/disk2 ext4 defaults 1 2/mnt/disk3 ext4 defaults 1 2修改完成后,运⾏下述命令使之⽣效:$ mount –o remount /mnt/disk1⼆、预读缓冲预读技术可以有效的减少磁盘寻道次数和应⽤的I/O等待时间,增加Linux⽂件系统预读缓冲区的⼤⼩(默认为256 sectors,128KB),可以明显提⾼顺序⽂件的读性能,建议调整到1024或2048 sectors。
预读缓冲区的设置可以通过blockdev命令来完成。
下⾯的命令将/dev/sda的预读缓冲区⼤⼩设置为2048 sectors。
$ blockdev –setra 2048 /dev/sda注意:预读缓冲区并不是越⼤越好,多⼤的设置将导致载⼊太多⽆关数据,造成资源浪费,过⼩的设置则对性能提升没有太多帮助HDFS配置及相关优化根据业务需求和服务器配置合理设置这些选项可以有效提⾼HDFS的性能配置项优化原理推荐值node.handler.countNameNode中⽤于处理RPC调⽤的线程数,默认为10。
对于较⼤的集群和配置较好的服务器,可适当增加这个数值来提升NameNode RPC 服务的并发度。
linux系统优化(CentOS7)1.概览CentOS系统安装之后并不能⽴即投⼊⽣产环境使⽤,往往需要先经过我们运维⼈员的优化才⾏。
在此写⼏点关于Linux系统安装后的基础优化操作。
注意:本次优化都是基于CentOS(7.7)2.优化⽬录配置yum源并安装基础软件修改主机地址,主机名dns等信息修改默认的端⼝,禁⽌root⽤户登录编辑sudo,以普通⽤户管理关闭selinux配置时间同步锁定系统关键⽂件,防⽌提权篡改为Grub菜单增加密码调整⽂件描述符数量,进程及⽂件打开都会消耗⽂件描述符精简并保留必要的开机⾃启动服务linux内核优化/etc/sysctl.confa.安装常⽤软件例如:wget vim lrzsz bash-completion telnet nmap等等yum -y install wget vim lrzsz bash-completion telnet nmapb.修改主机地址,主机名dns等信息[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 #⽹卡名字BOOTPROTO=static #静态IP地址获取状态如:DHCP表⽰⾃动获取IP地址IPADDR=172.16.1.113 #IP地址NETMASK=255.255.255.0 #⼦⽹掩码ONBOOT=yes #引导时是否激活GATEWAY=172.16.1.1[root@localhost ~]# vim /etc/hostnametest #这个是主机名我们也可以⽤ hostnamectl set-hostname test 来永久修改主机名,重新登录⽣效修改DNS[root@localhost ~]# vi /etc/resolv.conf #修改DNS信息nameserver 114.114.114.114nameserver 8.8.8.8[root@localhost ~]# cat /etc/resolv.conf #查看修改后的DNS信息nameserver 114.114.114.114nameserver 8.8.8.8[root@localhost ~]# systemctl restart network #重启⽹卡,⽣效重启⽹卡,也可以⽤下⾯的命令[root@localhost ~]# /etc/init.d/network restartc.修改默认的端⼝默认ssh配置⽂件是/etc/ssh/sshd_config⼤约在17⾏左右,有⼀个参数port 22,默认是注释的,我们打开注释,把22修改为别的端⼝即可注意:端⼝不要冲突,先备份。
linux 线程优先级设置方法Linux操作系统中,线程是轻量级的进程,合理设置线程的优先级可以优化系统资源的分配,提高程序的执行效率。
本文将详细介绍Linux线程优先级的设置方法。
一、线程优先级概述在Linux操作系统中,线程优先级通常分为两种:静态优先级和动态优先级。
1.静态优先级:在创建线程时分配的优先级,通常在程序运行过程中不会改变。
2.动态优先级:系统根据线程的运行情况动态调整的优先级,通常与线程的CPU使用时间、等待时间等因素有关。
二、设置线程优先级的方法1.使用sched_setparam()函数设置静态优先级函数原型:```cint sched_setparam(pid_t pid, const struct sched_param *param);```示例代码:```c#include <stdio.h>#include <unistd.h>#include <sched.h>#include <pthread.h>void *thread_function(void *arg) {// 线程函数代码}int main() {pthread_t tid;struct sched_param param;int policy;// 创建线程pthread_create(&tid, NULL, thread_function, NULL);// 获取当前线程的调度策略和优先级pthread_getschedparam(pthread_self(), &policy, ¶m);// 设置优先级(数值越大,优先级越高)param.sched_priority = 30;// 设置线程优先级if (pthread_setschedparam(tid, policy, ¶m) != 0) { perror("pthread_setschedparam");return 1;}// 等待线程结束pthread_join(tid, NULL);return 0;}```2.使用nice()函数设置动态优先级函数原型:```cint nice(int inc);```示例代码:```c#include <stdio.h>#include <unistd.h>#include <sys/resource.h>int main() {// 获取当前进程的nice值int old_nice = nice(0);// 设置新的nice值(数值越小,优先级越高)if (nice(-10) == -1) {perror("nice");return 1;}// 输出新的优先级printf("New priority: %d", old_nice - 10);return 0;}```三、总结本文介绍了Linux线程优先级的设置方法,包括使用sched_setparam()函数设置静态优先级和使用nice()函数设置动态优先级。
Linux操作系统中的内存管理和优化技术在Linux操作系统中,内存管理是一项非常重要的任务。
因为在计算机系统中,内存是最主要的资源之一,也是最容易被浪费或滥用的资源之一。
因此,在Linux系统中要做好内存管理,就必须要清楚该系统如何使用内存、怎样管理内存,以及如何优化内存使用。
一、Linux内存的分类在Linux系统中,我们一般将内存分为两种类型:物理内存和虚拟内存。
物理内存是指计算机实际存在的内存,而虚拟内存是指计算机中的硬盘空间,它在计算机中被用作为一种虚拟化内存的技术。
这种技术使得计算机可以虚拟出额外的内存空间,从而提高系统的内存使用效率。
二、Linux内存的使用在Linux系统中,内存不是一次性分配给所有程序使用的,而是按需分配的。
当系统需要更多内存时,它会从空闲的内存中分配出一部分,然后再使用这些内存来支持系统进程和应用程序。
此外,Linux系统中还有一个内存缓存,它可以帮助系统将经常被访问的数据存储在内存中,以便快速响应用户请求。
三、Linux内存管理在Linux系统中,内存管理模块负责管理系统的内存使用。
这个模块会跟踪系统内存使用情况,并将一部分内存分配给正在运行的进程和应用程序。
此外,如果系统内存使用过量,内存管理模块还能回收不必要的内存,并将其分配给更需要的进程或应用程序。
四、Linux内存优化技术1. 内存调整在Linux系统中,我们可以使用内存调整技术来优化内存使用。
这种技术可以通过修改内核参数来增加系统的内存使用效率。
我们可以使用sysctl命令来修改内核参数。
2. 内存抖动在Linux系统中,如果内存使用过量,就会出现内存抖动的情况。
内存抖动是指系统频繁地将一页内存从内存中换出,然后再将其换入内存。
这种过程会导致系统速度变慢,因此我们需要采取一些措施来优化内存使用。
我们可以在系统中使用Swap分区和Swap文件来降低内存抖动的风险。
3. 内存清理在Linux系统中,我们可以使用内存清理技术来优化内存使用。
一、Linux优化(安全+性能=32条) http://oldboy.blog.51cto.com/2561410/988726。 linux系统基础调优32条技巧(作参考)
http://lspgyy.blog.51cto.com/5264172/1308977 linux系统的基本优化 (做参考) 老男孩 网络状态说明及优化命令和优化细节请看: http://yangrong.blog.51cto.com/6945369/1321594
linux内核参数注释与优化 http://oldboy.blog.51cto.com/2561410/1336488 CentOS(5.8/6.4)linux生产环境若干优化实战
1.禁止root通过SSH远程登录并更改SSH端口 1.更改ssh服务端远程登录的配置 1.windows服务器的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest。 2.Linux的管理用户是root,普通用户很多,远程连接默认端口是22。 这些是搞IT的和黑客都知道的。为了系统安全,我们要隐藏或者更改默认的配置。 3. Ssh服务端的配置文件 /etc/ssh/sshd_config sshd_config sshd server (ssh服务端配置文件) sshd_config ssh client (ssh客户端配置文件)
[root@yvonne ~]# useradd oldboy 首先新建用户和密码或确认已有可登陆的普通用户 [root@yvonne ~]# passwd oldboy Changing password for user oldboy. New password:
[root@yvonne ~]# cd /etc/ssh/ [root@yvonne ssh]# ls moduli ssh_host_dsa_key ssh_host_key.pub ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key sshd_config ssh_host_key ssh_host_rsa_key.pub [root@yvonne ssh]# cp sshd_config sshd_config.yvonne.20150521 修改配置文件前先备份(比对和恢复) [root@yvonne ssh]# ls moduli ssh_host_dsa_key ssh_host_rsa_key ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key.pub sshd_config ssh_host_key sshd_config.yvonne.20150521 ssh_host_key.pub [root@yvonne ssh]# vim sshd_config 修改服务端的配置文件 13 #Port 22 13 Port 52113(自己定) 修改端口 默认为22 15 #ListenAddress 0.0.0.0 修改IP为内网ip 企业仅指定监听本机内网地址 21 Protocol 2 协议2 42 #PermitRootLogin yes- 42 #PermitRootLogin no 不允许root远程登陆 65 #PermitEmptyPasswords no 不允许空密码(有些版本需要注意) 122 #UseDNS yes 122 #UseDNS no 不需要DNS解析,可以快速连接 80 GSSAPIAuthentication no 连接慢时改为no
掌握之后可以直接将命令写到配置文件中(更快速、更高效): Port 52113 PermitRootLogin no PermitEmptyPasswords no UseDNS no GSSAPIAuthentication no ListenAddress 192.168.36.129
[root@yvonne ssh]# diff sshd_config sshd_config.yvonne.20150521 修改完后对比文件 13c13 < Port 52113 --- > #Port 22 15c15 < #ListenAddress 192.168.10.100 --- > #ListenAddress 0.0.0.0 42c42 < PermitRootLogin no --- > #PermitRootLogin yes 122c122 < UseDNS no --- > #UseDNS yes
Linux中内存比磁盘快,Linux中都是将文件加载到内存中向外提供访问,所以需要重启服务,此时还能登陆. [root@yvonne ssh]# /etc/init.d/sshd restart 重启服务使生效 Stopping sshd: [ OK ] Starting sshd: [ OK ]
注意:在重启sshd服务后,当前的CRT仍然可以连接服务器,直到退出重新登陆为止。 再次登录时,配置生效。Root不能登陆,需要更改端口后用其他用户登录。 [root@yvonne ssh]# ss -an | grep 192.168.10.100 查看网络连接状态 ESTAB 0 52 192.168.10.100:22 192.168.10.1:50829 ESTAB 0 0 192.168.10.100:22 虽然服务重启了,而占用的连接仍保持原来的状态,这是Linux的平滑概念,即服务更改正在连接的用户没有影响。类似银行关门之前会为所有已在银行的客户提供服务,而不是将客户撵出去。 排错:/etc/init.d/sshd配置都没问题,一般是防火墙没关闭(2015年6月8日10:58:19)。
以后在管理服务器时,用普通用户登陆,需要root权限的时候再用sudo切过去。 批量操作修改参数:
Linux优化理念: 安全:隐藏目标;让别人看不到你 防护:VPN(lan)、IP、port、username、password。内部人员可以走正门,对外只开放80web端口。
2.更改字符集(非必须) 修改Linux字符集,使支持中文显示。此项为可选项。 1.字符集就是一套文字符号及其编码。 2.常用的字符集有: UTF8 :非定长,1-4字节,兼容性好,广泛支持,mysql也是用utf-8. GBK:定长,双字节,不是国际标准,支持的系统也不少,相对而言中文更好用一些 GB2312: GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此
编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。(来自百度百科) 3.Linux系统的字符集文件: [root@yvonne ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 其中由LANG控制,默认为"en_US.UTF-8"
4更改字符集 服务端字符集(/etc/sysconfig/i18n) 客户端字符集(CRT)
[root@yvonne ~]# cd /etc/sysconfig/ [root@yvonne sysconfig]# cp i18n i18n.yvonne.20150522 改之前先备份 [root@yvonne sysconfig]# ls i18n.yvonne.20150522 i18n [root@yvonne ~]# vi /etc/sysconfig/i18n #LANG="en_US.UTF-8" 将默认的英文字符集注释掉 LANG="zh_CN.UTF-8" 添加中文字符集 SYSFONT="latarcyrheb-sun16" [root@yvonne ~]# diff /etc/sysconfig/i18n /etc/sysconfig/i18n.yvonne.20150522 操作完比对 1,2c1 < #LANG="en_US.UTF-8" < LANG="zh_CN.UTF-8" --- > LANG="en_US.UTF-8"
[root@yvonne ~]# source /etc/sysconfig/i18n 对比确定操作无误,用source或者“.”生效 [root@yvonne ~]# echo $LANG 操作后查看是否生效 zh_CN.UTF-8
[root@yvonne ~]# echo "今日事今日毕">hxy.txt [root@yvonne ~]# cat hxy.txt 今日事今日毕 改完客户端配置后,验证输入中文字符能识别
改完服务器的字符集后,要把客户端(CRT)改为一一致的字符集。“外观”-”字符集” 注意:没有特殊需求,不要让你的配置文件中带中文,Linux对中文的支持并不太友好。
6.临时调整字符集 [root@yvonne ~]# LANG=en
思考:用sed替换 3.配置sudo对普通用户权限精细控制. 3.1用sudo控制用户对系统命令的使用权限 1. man sudo NAME: sudo, sudoedit - execute a command as another user 2.sudo的作用让一个用户可以执行原本它没有权限的命令,这个权限需要其他用户授权。 3. visudo - edit the sudoers file(管理sudo配置文件的) visudo ==vi /etc/sudoers
更改用户权限 93 ## user MACHINE=COMMANDS 98 root ALL=(ALL) ALL 用户 主机 命令 一一对应
给普通用户提权或授予其他权限 [root@yvonne ~]# useradd hxy 新建用户 [root@yvonne ~]# passwd hxy 新建用户密码 New password: Retype new password: passwd: all authentication tokens updated successfully. [root@yvonne ~]# visudo 更改用户权限 98 root ALL=(ALL) ALL 100 hxy ALL=(ALL) ALL 给普通用户hxy提升至root权限 101 huang ALL=(ALL) /bin/touch 给普通用户Yvonne授予touch的权限 102 oldboy ALL=(ALL) NOPASSWD: /usr/sbin/useradd (不提示密码)