服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

使用Java崩溃我的磁盘

我有一个Java程序,必须做以下三件事: 从网站下载文件。 运行文件槽testA和testB(都在java中) 删除文件并将testing结果保存在磁盘上。 这大约有一百万个不同的网站。 这本来是一个相当简单的任务,因为我简单地粘贴了其他程序的一部分: testA和testB都已经单独执行了几百万个不同的页面,并且下载页面的例程也被执行了一百万或者多次浏览页面,也从来没有任何问题。 他们都在Ubuntu 10.4机器上执行。 但是,当一个接一个地执行这三个文件时,无论是哪个磁盘文件被写入崩溃。 我第一次在外置USB HD上运行它时,我必须手动断开并重新连接才能恢复运行(否则Linux将无法识别)。 下一次,在内部HD上,整个系统停机了,我不得不手动重新启动它。 写入Ram磁盘时也是如此。 问题是我不能真正隔离问题。 发生崩溃需要太长的时间(大约50小时左右,但是非常随机),所以testing需要很长时间,并且没有系统的失败日志表明它发生了什么。 机器或高清只是停止响应。 除了崩溃,一切工作正常。 文件正常创build和删除,线程不会死亡,并正确执行,两个testing工作正常。 更改内存或线程数对locking时间没有影响。 我已经检查了套接字或类似的东西没有closures,但我甚至不知道如何开始testing,我不知道如何崩溃一个系统如此灾难性的Java将成为可能。 编辑:通过挂断我的意思是,当我在外部的高清上运行它的高清将不会被Linux认可,当我在内部高清或Ram磁盘运行它的计算机将不会响应任何I / O不pipe什么都不写入磁盘,cactii日志不被logging等。例如,不能使用SSH连接。 程序运行的一个例子: List<String> pagesToDownload = getFromDataBase(); for(i=0;i<NumThreads;i++){ launchTestThread(); } 然后,在每个线程上: String pageName = getNextPageToDownload(); File downloadedFile = downloadPage(pageName); TestAResults testAResults = runTestA(downloadedFile); TestBResults testBResults = runTestB(downloadedFile); writeToDatabase(downloadedFile, testAResults, testBResults); downloadedFile.delete(); 单独的函数runTestA , […]

放大/缩小电子邮件存储服务器的典型方法是什么?

我试过了: 我有两个电子邮件存储架构。 旧的和新的。 旧: 快递 – imapds在几个(18+)1TB存储服务器上。 如果其中一个出现磁盘空间不足的迹象,我们会将一些电子邮件帐户迁移到另一台服务器。 服务器没有副本。 没有备份。 新: dovecot2在一台配有16TB(SATA)存储和一些SSD的巨大服务器上 我们将新邮件存储在固态硬盘上,并运行doveadm清除function,将超过一天的邮件移动到SATA磁盘 有一台相同的服务器,它具有来自主服务器的最长-15分钟的rsync备份 为了最大限度地降低每个服务器SSD的成本,上级/pipe理人员希望在每台服务器上尽可能多地存储存储空间 rsync正在完成,因为GlusterFS在那个高小的随机IO下复制得并不好。 预计将configuration另一对如此巨大的服务器 在面对像旧架构那样的磁盘紧缩问题时,手动移动电子邮件帐户将会完成。 关注/疑虑: 我不相信同步复制的文件系统理念适用于繁重的随机/小IO。 GlusterFS还没有为我们工作,我不知道这个用例是否有另一个文件系统。 这个想法是保持相同的配对,并使用DNS循环来发送电子邮件和IMAP / POP3访问。 如果服务器出于某种原因(计划/未计划)而出现故障,我们会将IP移到另一台服务器上。 在像Lustre这样的文件系统中,我获得了单一名称空间的好处,因此我不必担心手动迁移帐户并更新MAILHOMEpath和其他元数据/数据。 问题: 用传统软件(courier-imapd / dovecot)扩展/扩展的典型方法是什么? 传统的存储在本地安装的文件系统上的软件是否构成一个障碍,以最小的“问题”来扩展? 是否必须重新编写(部分)这些对象来使用某种对象存储 – 比如OpenStack对象存储?

需要帮助恢复损坏的SQL数据库

我有一个非常特殊的情况,我已经做了好几天了。 我有一个非常大的SQL Server 2008数据库(约2 TB),其中包含500个文件组以支持非常大的分区表。 最近我们在一个驱动器上发生了一次灾难性的失败,丢失了几个文件组,数据库变得无法访问。 我们每天都在进行文件组备份,但由于其他问题,我们丢失了日志和主文件组的最新备份。 我们备份了所有数据,但主文件组备份已旧。 自主文件组备份以来,没有任何模式更改,但lsn现在全部不同步,我们无法恢复数据。 我已经尝试了所有我能想到的(并且已经尝试了几乎所有的技巧,而且我可以google),但是我仍然得到同样的信息,说明文件组x的文件与主文件组不匹配。 我现在正试图编辑系统表(我们有一个单独的临时环境来做到这一点,所以我们不担心会破坏任何生产数据库)。 我已经尝试更新sys.sysdbreg,sys.sysbrickfiles和sys.sysprufiles,试图欺骗SQL,认为所有的文件都在线,但“select*从OPENROWSET(TABLE DBPROP,5)”显示不同的数据库状态我在sys.sysdbreg中看到。 我现在想我需要以某种方式编辑实际数据文件的头文件,以尝试将lsn与主文件alignment。 我很欣赏任何人可以在这里给我的帮助,但请不要用“你不应该编辑mdf,ndf文件….”或“看到MSDN文章….”等等这样的回应。一个先进的紧急情况,我需要一个真正的黑客,所以我们可以得到在这个损坏的数据库中的数据,并导出到一个新的数据库。 我知道有一种方法可以做到这一点,但不知道DBPROP系统函数做了什么(例如看系统表还是实际打开文件),使我无法想出如何愚弄SQL让我阅读这些文件。 谢谢你的帮助。