精华内容
下载资源
问答
  • linux服务器重启导致redis数据丢失

    万次阅读 2018-03-08 14:33:56
    1.需求分析 当linux服务器重启后,然后开启redis服务器,结果会发现redis之前存储的数据会部分丢失甚至全部丢失;笔者公司项目中很多场景都用到了redis,比如说定时器,之前也有遇到过定时任务中的逻辑未执行的情况...

    1.需求分析

         当linux服务器重启后,然后开启redis服务器,结果会发现redis之前存储的数据会部分丢失甚至全部丢失;笔者公司项目中很多场景都用到了redis,比如说定时器,之前也有遇到过定时任务中的逻辑未执行的情况,当时笔者粗略定位是redis没有进行序列化存储,结果改良后还是存在这种漏执行的情况;然后通过追加定位,才发现是redis中的数据丢失导致key不存在,最终致使定时任务无法执行定时器中的逻辑。

    2.解决方案

    ①vim /etc/sysctl.config 编辑sysctl.config

    ②独占一行,添加一行  vm.overcommit_memory = 1

    ③wq保存修改的配置,然后sysctl -p 使配置生效

    这样linux服务器即使重启了,之前的数据依然存在!

     

    展开全文
  • linux文件句柄不足导致服务器僵死

    千次阅读 2011-01-14 22:06:00
    linux文件句柄,java与文件句柄

      测试组同事做性能测试的时候,Web容器在NIO模式下,用1000个并发做压力测试。同事一般使用jconsole连接到应用服务器实例的JMX MBean Server监控内存变化和线程变化情况。但是前两天发现并发上去之后,jconsole不能获得数据了,不能做任何监控了,并且jconsole的报下面的错误

                       

     

      初一看,这问题不好解决呀,感觉很朦胧,但是静下心来想想,还是有条理地解决吧,分析思路如下:

       1,从堆栈分析得出,jconsole肯定是取某个MBean(最后查出是MBean ObjectName为:java.lang:type=OperatingSystem的这个MBean),所以写了一个很简单的JMX Client做while循环取java.lang:type=OperatingSystem的CommittedVirtualMemorySize。发现简单的客户端也出错,便用修改JMX Client为两种方式,一种是在while循环里面try catch(也就是说当取失败之后仍然继续调用MBean取属性),一种是try catch里面做while循环,也就是一旦取失败之后,整个JMX Client的Java就会退出了。猜测JConsole之所以停滞就是因为JConsole的机制是:一旦出现异常就不去获取了,也就是等同于我的简单Client在try catch里面做循环。

      2,简单的Client和jconsole都是连接到应用服务器实例的MBeanServer上的,jconsole的控制台报的错误就是连接的MBeanServer所在的JVM进程的错误,所以就重点查服务器实例(就是JConsole连接的MBeanServer所在的jvm进程)获取CommittedVirtualMemorySize的操作。

     

      看了JDK的代码之后

      3,知道UnixOperatingSystem的getCommittedVirtualMemorySize是个本地方法,再加上报Unable to open /proc/self/stat错误,感觉和操作系统可能有一点关系。就有做了一次压力测试,同时监控jconsole和服务器实例的日志,这一测试发现,在jconsole报错之前服务器实例报了一个"too many open files",这日志一看,就比较明了了,几乎可以肯定是与文件描述符显示有关系。

      4,继续再做压力测试的同时用命令监控文件句柄数量(while(true) do /usr/sbin/lsof -p $应用服务器java进程的pid | wc -l;sleep 1;done),发现这一数据有最初的140多飙升至1132左右之后,jconsole就会停止,服务器实例的日志也会把异常。就在1132数据的时候用(/usr/sbin/lsof -p $应用服务器java进程的pid > lsof.txt),查看输出的结果,发现http端口18080所占的端口的Socket连接达到991个,问题已经水落石出了,就是同一个进程占用的文件句柄数(Socket也算是文件句柄)超过了默认的1024.

     

      解决办法:

     1,修改/etc/security/limits.conf文件,在末尾增加一行,增大文件句柄限制数量,如下

     bes soft nofile 2000//四个数据依次是用户(可以使用*标识所有用户),类型(soft和hard两种),限制的属性(打开文件句柄数量/文件大小等等都可以限制),限制属性具体的值 ||||我这个配置的意思就是现实bes用户打开文件句柄最大为2000,这样1000个并发过来也没问题。

     2,网上说ulimit -Sn 2000类似的命令也可以,但是好像ulimit对用户限制较多,只有root用户才能修改nofile这个属性,并且ulimit命令修改的话只对当前用户有效。

      所以修改配置文件是比较好的解决方案。

     

      问题解决了,解决问题往往涉及到很多方面的知识,操作系统,编程语言,网络知识,甚至到数据库等等。要想成为高手,路还远。

    展开全文
  • 使用xshell6连接Linux服务器失败的原因

    万次阅读 多人点赞 2018-08-02 14:48:21
    1. 我在使用xshell6连接到服务器上面发生了连接失败的问题 2. 仔细分析了一下,可能存在的原因有: ① 在虚拟机上没有连上网 所以首先要保证要连接上网 ② 没有开启SSHD服务可以通过系统->服务查看是否...

    1. 我在使用xshell6连接到服务器上面发生了连接失败的问题

    2. 仔细分析了一下,可能存在的原因有:

    ① 在虚拟机上没有连上网

    所以首先要保证要连接上网

    ② 没有开启SSHD服务可以通过系统->服务来查看是否启动了该服务,可以在命令行中输入service sshd  status命令来查看该服务的状态

    ③在网上搜索了一下,可能是防火墙的问题(要关闭掉防火墙)

    可以使用命令设置防火墙:

    a. 永久性生效

    开启:chkconfig iptables on

    关闭:chkconfig iptables off

    b. 即时生效,重启后失效

    开启:service iptables start

    关闭:service iptables stop

    3. 保证在前面三项都设置好的话,我先在xshell6上尝试连接上服务器,但是连接还是失败,在从网上查找了资料,在xshell6上看看能不能ping通虚拟机的ip地址,发现ping不通,打开控制面板发现在自己虚拟机上设置的NAT模式的网卡的ip地址所在的网段与虚拟机上的不一致

    而且没有开启DHCP功能,所以进入虚拟机进行设置,回想起来是因为自己在修改DHCP的网段的时候没有确定,导致没有开启DHCP的服务,连接就失败了,重修修改确定之后再次进入控制面板可以发现Vmware8网卡已经开启了DHCP服务,ip地址与主机的ip地址也在同一个网段

    4. 在xshell6上连接Linux服务器就可以连接上了

     

    展开全文
  • 我买了三年的阿里云服务器(在阿里云官网买的),已经使用了一年多了,平时拿搭建网站,有时也拿学习技术和开发测试,一直使用很稳定。直到近期我服务器上安装了docker并部署了springboot+mysql+nginx项目,就被...

    木马攻击问题由来阐述

    我买了三年的阿里云服务器(在阿里云官网买的),已经使用了一年多了,平时拿来搭建网站,有时也拿来学习技术和开发测试,一直使用很稳定。直到近期我服务器上安装了docker并部署了springboot+mysql+nginx项目,就被攻击了。但就在今年的5月14号,我的服务器被木马攻击,然后被拿去挖矿了。我服务器的cpu持续维持在CPU100%. 后果是直接导致我网站无法正常请求和响应。而且Linux服务器的root权限被窃取了。
    黑客在服务器/root/.ssh目录下生成了连root用户也无法删除的ssh密钥文件(本质就是利用chattr命令加了特殊权限),可以免密码登录。这样的后果就是,我的服务器的控制权被别人控制了。是可忍熟不可忍,必须解决。

    我是第一次遇见这种恶心的问题,也不知道黑客们是怎么盯上我的服务器的,也许我是无目的的攻击受害者。作为建站老鸟以及程序员的我,硬着头皮也得解决。因为我是搞前端方面的,所以Linux方面的技能都是我业余时间学习。所以这次问题的解决经过还是挺考验学习能力的。

    大致过程分为两大步:

    • 第一步:清除木马后门(ssh免登录密钥)
    • 第二步:杀死木马进程以及清除木马文件(挖矿病毒crypto和蠕虫病毒pnscan)

    我用到的工具

    • 阿里云服务器:阿里云服务器,国内第一大云品牌,当初是用它来入门学习编程技术的。当然用到它了,要不然中病毒的受害者是谁呢。当然不是说买了阿里云的服务器才会中毒,因为病毒中毒是因为你Linux安全意识和使用不当造成的。这次我是因为docker使用或者纯碎因为ssh暴力破解有关系。所以你换其它家的云服务器,比如腾讯云服务器,也一样存在被攻击的可能。事后,我们必须去学点基础的安全防护技巧。
    • 宝塔面板:宝塔面板是很重要的工具,这里就不多说了,入门和使用教程汇总参考:宝塔面板安装和入门教程汇总
    • FinalShell客户端:下载地址 该客户端可以安装之后更新到最新版本。
    • chattr源码文件一份(C程序):需要编译chattr文件,破解病毒的chattr附加的特殊属性i 。我再文章中已经给了源码地址,自己去下载使用。Linux系统可以敲命令行去编译c程序源码文件。

    第一步:删除免登录ssh密钥文件(木马后门)

    1、先下载C文件(https://github.com/posborne/linux-programming-interface-exercises/blob/master/15-file-attributes/chattr.c), 上传到服务器的任意目录

    2、编译,cc chattr,得到文件a.out,把名字改成chattr
    这一步出现了一个错误:collect2: fatal error: cannot find 'ld' compilation terminated.
    解决方法是(两条命令):

     yum -y install binutils 
     ln -s /usr/bin/ld.gold /usr/bin/x86_64-nptl-linux-gnu-ld.gold
    

    参考资料:运行gcc出现collect2: fatal error: cannot find ‘ld’

    3、运行编译好的文件,把被篡改的文件去掉不可修改的隐藏属性,./chattr -ia /usr/bin/chattr 编译文件运行命令是:"./chattr" 使用指令 ./a.out 执行该程序
    参考资料:Linux环境编译运行C语言程序

    4、再把编译好的文件,放回/usr/bin/。这一步我没有选择覆盖chattr文件,我选择的是先删除rm -f chattr 文件,然后执行安装命令:yum install e2fsprogs 安装chattr和lsattr. 然后就可以正常的修改和删除/root/.ssh/目录下的密钥文件了。干掉黑客的root权限。

    chattr文件目录: /usr/bin/chattr
    ssh密钥文件目录:/root/.ssh
    编译chattr文件源码目录:/root (这个目录可以随意选)

    编译安装chattr之后,就可以正常使用chattr命令了

    #查看文件属性
    lsattr authorized_keys
    # 去除a属性
    chattr -a  authorized_keys
    # 去除i属性
    chattr -i  authorized_keys
    # 去除e属性
    chattr -e  authorized_keys
    

    没有修改特殊属性的文件 权限是600 。root用户无法删除和修改。通过上面的chattr命令一一去除特殊属性,就可以正常修改和删除密钥文件了。

    密钥文件里面的内容已经被我清空了。这两个文件终于可以修改了。

    参考教程:

    第二步:杀病毒crypto和pnscan病毒进程

    查找CPU100耗尽的原因

    挖矿病毒crypto和pnscan 入侵linux主机,留有/root/.ssh/密钥免登录后门。

    第1步:清除root免登录权限。这一步我们已经做好了。

    第2步:删除挖矿病毒crypto和pnscan文件。

    crypto文件目录位置:/urs/share/
    pnscan文件目录位置:/usr/local/bin

    如果木马文件不在这两个位置,可以使用命令来查找:
    whereis pnscanwhereis crypto这命令会显示文件所在的Linux路径

    这两个病毒相关文件,可以直接用rm -f 文件名 直接删除干净。它们没有加chattr特殊权限。

    我把这几个要删除的病毒文件全部下载到了window电脑上。就是为了截图给大家,要删除哪些文件。注意pnscan病毒目录和crypto病毒目录不在一块,我是下载到window才统一放到一个目录的。

    我在自己的阿里云服务器上删除了这两个病毒相关文件(crypto是5个文件,pnscan是1个文件),这一步就算完成了。

    第3步:杀crypto和pnscan两个进程,cpu就会降下来。而不是百分百耗尽。

    用 top 命令查出cpu占用高的进程。很明显能发现是crypto和pnscan两个进程cpu占用高。
    crypto进程可能会伪装其它名字,需要仔细发现。pnsan进程有可能会杀不死,需要先删除两个病毒文件,才去杀病毒进程,效果会更好。

    # Linux执行top查询cpu进程占用情况
    top
    

    小技巧:这次我没有用finalshell来操作这些命令,因为cpu占用100的情况下,写命令行也很卡,而且无法看到Linux目录视图。所以我用宝塔面板的终端来写ssh命令,主要是能看到Linux文件目录视图。

    通过top命令可以清晰的查看到病毒进程的高cpu占用率。记住它们的进程pid

    # 杀死两个病毒进程,服务器CPU恢复正常。这是关键的一步操作
    sudo kill -9 27220 24131
    

    你运行上面的kill命令也会出现kill没有权限而运行失败的错误提示。毫无疑问,linux系统的关键命令都被加了chattr特殊属性,需要去除它的i属性,去除之后,才执行上面的杀病毒进程命令。杀完病毒进程之后,再用top命令去监控,发现没有了cpu高占用率的进程之后,可以去观察宝塔面板和其它FinalShell客户端,会显示cpu运行正常的。

    # 找到kill路径
    whereis kill
    # lsattr查看特殊属性
    lsattr /usr/bin/kill
    # chattr去除附加特殊属性 i
    chattr -i /usr/bin/kill
    # chmod赋权限
    chmod 755 /usr/bin/kill
    # 现在你就可以正常去执行kill命令了。
    

    宝塔面板ssh命令终端展示:

    [root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /bin/kill
    ----i--------e-- /bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# chattr -i /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill
    -------------e-- /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# chmod +x /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill
    -------------e-- /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# sudo ls -l /bin/kill
    ---xr-xr-x. 1 root root 33608 Apr  1  2020 /bin/kill
    

    FinalShell终端命令展示:

    [root@iZuf6bm7y86rsciyk4lvriZ ~]# whereis kill
    kill: /usr/bin/kill /usr/share/man/man1/kill.1.gz
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# lattr /usr/bin/kill
    -bash: lattr: 未找到命令
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill
    -------------e-- /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# chattr -i /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# chmod 755 /usr/bin/kill
    [root@iZuf6bm7y86rsciyk4lvriZ ~]# 
    
    

    其中用到的命令:netstat 也会遇到和kill命令类似的问题。解决方法类似:

    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# netstat -nltp
    -bash: /usr/bin/netstat: Permission denied
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# chmod 755 /usr/bin/netstat
    chmod: changing permissions of ‘/usr/bin/netstat’: Operation not permitted
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# lsattr /usr/bin/netstat
    -------i------e-- /usr/bin/netstat
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# chattr -i /usr/bin/netstat
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# chmod 755 /usr/bin/netstat
    
    # 用 netstat命令查看端口情况。netstat命令附带属性可以查资料
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# netstat -nltp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      
    [root@iz8vb8rrw7wiwqtau1dp8jz bin]# 
    
    

    在杀了病毒进程之后,CPU终于恢复到正常水平,终于成功了,好开心啊,因为过程还是比较曲折的。

    FinalShell客户端显示cpu正常。

    宝塔面板显示cpu运行正常。

    总结:经过这次安全事件,我应该去学点基础的安全防护技巧,比如,不能用root用户操作Linux系统,不能用账户和密码登录账户,禁用它,然后用ssh密钥登录。比如使用相关的安全工具去防护它。

    参考教程:


    原文出处:https://www.yundashi168.com/272.html

    展开全文
  • 记一次更新glibc库导致Linux服务器无法启动的解决方案
  • 由于redis中的数据丢失导致value存在,最终致使定时处理数据任务无法执行。 解决办法 1.编辑配置文件 vim /etc/sysctl.conf 2.在最后一行添加 vm.overcommit_memory = 1 3.使配置生效 sysctl...
  • 通过free -h 命令,发现服务器可用内存不足,并发现大量的内存被占用到buff/cache中。 一类,直接可以通过命令进行释放 sync; echo 3 > /proc/sys/vm/drop_caches 可以看到,cached的19G内存已经释放。 ...
  • linux服务器重启后导致redis数据丢失

    千次阅读 2018-11-27 20:18:31
    直接上解决方案: 1.找到 /etc/sysctl.conf vim /etc/sysctl.conf 2.在最后一行添加 vm.overcommit_memory = 1 ...3.wq保存,用sysctl -p 使配置生效 ...以后linux服务器在重启,redis的数据就不会丢了。...
  • linux下编译安装nginx服务器,上传了简单网页测试,发现网页排版出现混乱,css和js没有加载~,上网找了很多资料,最终得以解决 1.include mime.types; 添加如下: http { include mime.types; } 2.添加后...
  • Linux 修改服务器时间

    千次阅读 2020-11-26 14:18:47
    有次服务器重启,导致登录一直失败,定位原因,发现是三台服务器时间一致导致的。 1,查看时间 date 会显示当前服务时间 2,修改时间,日期加时分秒,日期和时分秒要有个空格 date -s "2020-11-26 14:14...
  • Linux服务器连接上的几种解决办法

    万次阅读 2017-08-31 19:45:02
    Linux远程服务器连接上,或连接超时解决办法: 1、测试网络是否通:  ping 远程IP 2、如果能ping通则表示与服务器网络连接是正常,接下来测试端口: telnet 远程ip 端口 3、如果telnet上,要考虑...
  • 首先我部署在linux服务器上的项目莫名其妙连上oracle库了,用plsql连接报这个: 然后我就上putty,ssh连接服务器,sqlplus登录库时报这个: ORA-01034 - Oracle not available ORA-27101 - shared memory ...
  • 在部署完环境后,调试完都显示正常,可是第二天图片验证码字体出现乱码,通过后台打印日志发现后台生成的验证码是正常的,但是前端显示出现问题。 解决办法 一、安装字体的包 ...#需要的字体文件为msy...
  • linux ftp服务器搭建

    千次阅读 多人点赞 2020-03-01 18:12:00
    ftp服务器安装设置 第一步: 安装vsftpd 第二步: 配置文件 第三步: 访问服务器进行测试
  • linux服务器磁盘爆满分析

    万次阅读 2021-01-12 12:57:53
    linux服务器使用时间长后,导致系统登录失败(磁盘爆满)。 原因分析: 登录失败:redis服务无法访问。启动redis后,redis的log日志显示启动失败,原因服务器磁盘爆满,无法加载数据。 爆满原因:查询服务器大...
  • 系统出现异常我们团队的阿里云服务器在前几天运行过程中,服务器CPU负载长时间达到100%,并且能通过ssh连接服务器。 经过重启服务器后对服务器进行连接,发现 服务器上的crontab能正常运行 php-fpm服务能正常...
  • 废话多说,直接进入正题 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 项目...
  • linux服务器用centos还是ubuntu系统_Linux

    万次阅读 2017-10-18 13:43:18
    摘要: 本文讲的是linux服务器用centos还是ubuntu系统_Linuxlinux服务器系统多使用CentOS、uBuntu、Gentoo、FreeBSD、Debian。服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS ,CENTOS现在市场占有率第一...
  • linux服务器与windows服务器哪个好

    万次阅读 2017-09-18 14:32:15
    这个要看您网站选取的语言,如果是asp建设的网站,毫不犹豫应该选择Windows主机,Linux不支持asp系列的语言;如果是PHP语言建设的网站,建议选择Liunx主机,因为在liunx平台中,Linux+Apche+Mysql构架运行PHP网页...
  • 不管是Mac电脑还是Windows电脑,终端连接Linux服务器的步骤都是一样的,接下来就来分享一下关于服务器的重启以及服务器部署的服务的相关内容,大牛可以飘过。 一、通过终端连接服务器  开发过程中经常需要通过类...
  • 从控制台中用root登陆输入以下命令解锁用户: pam_tally2 -u username -r 如果root用户被禁止登陆,可以使用单用户(安全)模式进入系统
  • 一、遇到的状况  出网带宽:流出服务器的... 2M的带宽几乎一直被占用,导致程序非常卡,出网带宽占用一般情况是从服务器在大量持续性下载东西,或者访问异 常,恶意访问等等。 二、解决方法(在服务器安装i...
  • 公司有七台物理机服务器内网主机名和IP分别为 server1:192.168.3.2 server2:192.168.3.4 server3:192.168.3.6 server4:192.168.3.8 hadoop1:192.168.3.10 hadoop2:192.168.3.12 hadoop3:192.168.3.14 其中...
  • Linux服务器性能优化

    千次阅读 2016-10-20 10:34:17
    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程...
  • Linux服务器集群LVS

    千次阅读 2016-06-12 03:05:41
    本文主要介绍了Linux服务器集群系统–LVS(Linux Virtual Server),并简单描述下LVS集群的基本应用的体系结构以及LVS的三种IP负载均衡模型(VS/NAT、VS/DR和VS/TUN)的工作原理,以及它们的优缺点和LVS集群的IP负载...
  • Linux服务器内存使用量超过阈值,触发报警。 问题排查 首先,通过free命令观察系统的内存使用情况,显示如下: total used free shared buffers cached Mem: 24675796 24587144 88652 0
  • 设置linux服务器时间自动同步

    千次阅读 2018-11-23 11:41:41
    公司项目中调用接口,其中有一些接口需要以当前时间加密,接口要求误差时间能超过一分钟,但是LINUX服务器长时间运行,时间会准确导致接口调用失败。 ntp常用服务器: 中国国家授时中心:210.72.145.44 NTP...
  • 以前有过这样的情况,原因是硬盘不够了。后来问du -h *看了下,还有几个G的硬盘。 这个就奇怪了,于是top看了下cpu使用情况,mysql一直占用99%的! 早上我也没做什么,然后看阿里云的后台的cpu使用情况,...
  • linux 重启服务器命令大全

    千次阅读 2017-07-27 11:23:31
    Linux关机和重启服务器命令详解  1.shutdown -r now 2.reboot 3.startx 重启的3中方法 在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每...
  • Linux DNS服务器故障解决

    千次阅读 2010-08-18 01:09:00
    现在UNIX类操纵系统(UNIX、Linux、BSD)的域名服务器绝大多数都是用BIND架设的。由于DNS服务器负责域名的解析工作,其重要性不言而喻。如果在Linux网络中无法进行域名解析,很可能是没有在本地指定有效的域名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,282
精华内容 119,712
关键字:

linux导致服务起不来的原因

linux 订阅