当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪iis Web站点崩溃的原因分析       有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题。如果可以解决这些常规问题,那么也将有能力对.........
    ▪绝招:隐藏管理员账号 三分钟搞定       对regedit.exe大家都很熟悉,但却不能对注册表的项键设置权限,而regedt32.exe最大的优点就是能够对注册表的项键设置权限。nt/2000/xp的帐户信息都在注册表的HKEY_LOCAL_MACHINE\SAM\SAM键下,但是除.........
    ▪用windows计划任务实现服务器定时重启       用操作系统的计划任何调用iisreset.exe /reboot来实现,方法如下: 在开始--控制面板---计划任务,点添加计划任务 在浏览程序中选中c:\windows\system32\iisreset.exe,然后选每天, 添加完成后,点这个任务.........

[1]iis Web站点崩溃的原因分析
    来源: 互联网  发布时间: 2013-12-24
有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题。如果可以解决这些常规问题,那么也将有能力对付出现的一些意外情况。

   磁盘已满 

  导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。

  日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。

   C指针错误 

  用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引用指针(即,访问指向的内存)中出现一个错误,就会导致操作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量(analog)将访问一个空的对象引用。Java中的空引用通常不会导致立刻退出JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。在这方面,Java无需过多的关注,但使用Java对可靠性进行额外的度量则会对性能产生一些负面影响。

   内存泄漏 

  C/C++程序还可能产生另一个指针问题:丢失对已分配内存的引用。当内存是在子程序中被分配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要操作系统还在运行中,则进程就会一直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。

  解决方案之一是使用代码分析工具(如Purify)对代码进行仔细分析,以找出可能出现的泄漏问题。但这种方法无法找到由其他原因引起的库中的泄漏,因为库的源代码是不可用的。另一种方法是每隔一段时间,就清除并重启进程。Apache的Web服务器就会因这个原因创建和清除子进程。

  虽然Java本身并无指针,但总的说来,与C程序相比,Java程序使用内存的情况更加糟糕。在Java中,对象被频繁创建,而直到所有到对象的引用都消失时,垃圾回收程序才会释放内存。即使运行了垃圾回收程序,也只会将内存还给虚拟机VM,而不是还给操作系统。结果是:Java程序会用光给它们的所有堆,从不释放。由于要保存实时(Just In Time,JIT)编译器产生的代码,Java程序的大小有时可能会膨胀为最大堆的数倍之巨。

  还有一个问题,情况与此类似。从连接池分配一个数据库连接,而无法将已分配的连接还回给连接池。一些连接池有活动计时器,在维持一段时间的静止状态之后,计时器会释放掉数据库连接,但这不足以缓解糟糕的代码快速泄漏数据库连接所造成的资源浪费。

   进程缺乏文件描述符 

  如果已为一台Web服务器或其他关键进程分配了文件描述符,但它却需要更多的文件描述符,则服务器或进程会被挂起或报错,直至得到了所需的文件描述符为止。文件描述符用来保持对开放文件和开放套接字的跟踪记录,开放文件和开放套接字是Web服务器很关键的组成部分,其任务是将文件复制到网络连接。默认时,大多数shell有64个文件描述符,这意味着每个从shell启动的进程可以同时打开64个文件和网络连接。大多数shell都有一个内嵌的ulimit命令可以增加文件描述符的数目。

   线程死锁 

  由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。我们来想像这样一种情形:在人行道上两个人迎面相遇,为了给对方让道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。双方都以同样的迈步方式堵住了对方的去路。假设这种情况一直持续下去,这样就不难理解为何会发生死锁现象了。

  解决死锁没有简单的方法,这是因为使线程产生这种问题是很具体的情况,而且往往有很高的负载。大多数软件测试产生不了足够多的负载,所以不可能暴露所有的线程错误。在每一种使用线程的语言中都存在线程死锁问题。由于使用Java进行线程编程比使用C容易,所以Java程序员中使用线程的人数更多,线程死锁也就越来越普遍了。可以在Java代码中增加同步关键字的使用,这样可以减少死锁,但这样做也会影响性能。如果负载过重,数据库内部也有可能发生死锁。

  如果程序使用了永久锁,比如锁文件,而且程序结束时没有解除锁状态,则其他进程可能无法使用这种类型的锁,既不能上锁,也不能解除锁。这会进一步导致系统不能正常工作。这时必须手动地解锁。

   服务器超载 

  Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。操作系统级别可能还在不断地接收新的连接,而应用程序(Web服务器)却无法为这些连接提供服务。用户可以在浏览器状态行上看到connected(已连接)的提示消息,但这以后什么也不会发生。

  解决问题的一种方法是将obj.conf参数RqThrottle的值设置为线程数目之下的某个数值,这样如果越过RqThrottle的值,就不会接收新的连接。那些不能连接的服务器将会停止工作,而连接上的服务器的响应速度则会变慢,但至少已连接的服务器不会被挂起。这时,文件描述符至少应当被设置为与线程的数目相同的数值,否则,文件描述符将成为一个瓶颈。

   数据库中的临时表不够用 

  许多数据库的临时表(cursor)数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。

  这是一个不容易被程序员发觉的问题,但会在负载测试时显露出来。但可能对于数据库管理员(DataBase Administrator,DBA)来说,这个问题十分明显。

  此外,还存在一些其他问题:设置的表空间不够用、序号限制太低,这些都会导致表溢出错误。这些问题表明了一个好的DBA对用于生产的数据库设置和性能进行定期检查的重要性。而且,大多数数据库厂商也提供了监控和建模工具以帮助解决这些问题。

  另外,还有许多因素也极有可能导致Web站点无法工作。如:相关性、子网流量超载、糟糕的设备驱动程序、硬件故障、包括错误文件的通配符、无意间锁住了关键的表。


    
[2]绝招:隐藏管理员账号 三分钟搞定
    来源: 互联网  发布时间: 2013-12-24
对regedit.exe大家都很熟悉,但却不能对注册表的项键设置权限,而regedt32.exe最大的优点就是能够对注册表的项键设置权限。nt/2000/xp的帐户信息都在注册表的HKEY_LOCAL_MACHINE\SAM\SAM键下,但是除了系统用户SYSTEM外,其它用户都无权查看到里面的信息,因此我首先用regedt32.exe对SAM键为我设置为“完全控制”权限。这样就可以对SAM键内的信息进行读写了了。具体步聚如下:
  1、假设我们是以超级用户administrator登录到开有终端服务的肉鸡上的,首先在命令行下或帐户管理器中建立一个帐户:hacker$,这里我在命令行下建立这个帐户 net user hacker$ 1234 /add

  2、在开始/运行中输入:regedt32.exe并回车来运行regedt32.exe。

  3、点“权限”以后会弹出窗口点添加将我登录时的帐户添加到安全栏内,这里我是以administrator的身份登录的,所以我就将administrator加入,并设置权限为“完全控制"。这里需要说明一下:最好是添加你登录的帐户或帐户所在的组,切莫修改原有的帐户或组,否则将会带来一系列不必要的问题。等隐藏超级用户建好以,再来这里将你添加的帐户删除即可。

  4、再点“开始”→“运行”并输入"regedit.exe" 回车,启动注册表编辑器regedit.exe。 打开键:HKEY_LOCAL_MAICHINE\SAM\SAM\Domains\account\user\names\hacker$"

  5、将项hacker$、00000409、000001F4导出为hacker.reg、409.reg、1f4.reg,用记事本分别打这几个导出的文件进行编辑,将超级用户对应的项000001F4下的键"F"的值复制,并覆盖hacker$对应的项00000409下的键"F"的值,然后再将00000409.reg与hacker.reg合并。

  6、在命令行下执行net user hacker$ /del将用户hacker$删除:net user hacker$ /del

  7、在regedit.exe的窗口内按F5刷新,然后打文件-导入注册表文件将修改好的hacker.reg导入注册表即可

  8、到此,隐藏的超级用户hacker$已经建好了,然后关闭regedit.exe。在regedt32.exe窗口内把HKEY_LOCAL_MACHINE\SAM\SAM键权限改回原来的样子(只要删除添加的帐户administrator即可)。

  9、注意:隐藏的超级用户建好后,在帐户管理器看不到hacker$这个用户,在命令行用“net user”命令也看不到,但是超级用户建立以后,就不能再改密码了,如果用net user命令来改hacker$的密码的话,那么在帐户管理器中将又会看这个隐藏的超级用户了,而且不能删除。

注:本地机直接从第2步开始

    
[3]用windows计划任务实现服务器定时重启
    来源: 互联网  发布时间: 2013-12-24
用操作系统的计划任何调用iisreset.exe /reboot来实现,方法如下:

在开始--控制面板---计划任务,点添加计划任务

在浏览程序中选中c:\windows\system32\iisreset.exe,然后选每天,

添加完成后,点这个任务的属性,然后在运行中输入

C:\WINDOWS\system32\iisreset.exe /reboot

确定后就会生效. 

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3