小编tom*_*ing的帖子

糟糕的内部数据库 - 更换它还是夹住硬件?

所以 - 我们有一个内部公司数据库,通常的东西:管理客户、电话、销售交易和客户协议/计划。

它是一个 Access 2000 前端和一个 SQL Server 2000 Standard 后端。单台服务器、双 Xeon 3.2GHz、2GB RAM、Windows Server 2003,整天获得大约 40% 的 CPU 负载,分布在操作系统 (HT) 可见的 4 个内核上。

后端数据库设计不佳,已经有机增长超过 10 年,由不那么熟练的人员维护。它被严重规范化,一些明显的问题包括具有数万行没有主键或索引的表,这些表也大量用于系统中一些最常用部分的多表连接(例如呼叫管理器应用程序,每天在每个人的第二台显示器上运行 8 小时,每隔几秒钟运行一次低效的大查询)。

前端也好不到哪里去,它是典型的由数百个表单、嵌套保存的查询、VBA 代码中编写不当的嵌入式 SQL、数十个“怪癖”等组成的典型混乱,并且每当进行更改时,一些无关的东西似乎都会中断。我们已经确定了一个运行“足够好”的 MDB,现在有一个不变的政策,因为我们内部没有 Access 重量级人物(也没有计划雇用一个)。

公司现在正在缓慢增长,增加客户、呼叫等数量,同时并发用户数量适度增加,最近性能明显变差(等待在表单之间移动,等待列表填充等) )

Perfmon 说:

  • 每秒磁盘传输:在 0 到 30 之间,平均 4。
  • 当前磁盘队列长度:徘徊在 1 左右

SQL Server 的探查器每分钟看到数十万个查询。客户端上的 CPU 使用率几乎为零,表明它正在等待服务器端查询执行。我已经通过 DB Engine Tuning Advisor 处理了这个工作负载,并将其建议应用于测试备份,但这并没有产生太大的不同。

顺便说一下,我们有 100MB 和千兆以太网的混合,都在一个子网上,两层楼有 40 个用户。

对问题。

在我看来,我们有两种选择来解决/改善这种情况。

  • 我们可以废弃它并用全新的 CRM 系统替换它,无论是定制的还是部分定制的
  • 我们可以通过夹住硬件来延长该系统的使用寿命。

我们可以用比更换软件低一个数量级的成本来构建具有疯狂性能数字的 Intel i7 系统。

当最终开发出一个新系统时,它可以托管在这个盒子上,因此不会浪费硬件。一个新的 CRM 系统不断被推迟、关闭、关闭——我认为这种情况至少在一年内不会发生。

对这种情况的任何想法,特别是如果您亲自来过这里,将不胜感激。

谢谢

hardware database-performance sql-server microsoft-access

39
推荐指数
5
解决办法
909
查看次数

将根域记录设置为 CNAME

我需要为一个 CNAME 域创建一个 NS 记录,目的是让两个域指向一个 IP,而不必在两个不同的地方维护当前的 IP 地址。

此域的 DNS 提供商是 DynDNS,但它们阻止了此操作:

不能使用与区域名称相同的标签创建 CNAME

我可以使用 1and1 提供 DNS 的另一个域来执行此操作:

root@srv-ubuntu:~# dig myseconddomain.co.uk

; <<>> DiG 9.4.2-P1 <<>> myseconddomain.co.uk
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61795
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;myseconddomain.co.uk.             IN      A

;; ANSWER SECTION:
myseconddomain.co.uk.      71605   IN      CNAME   myfirstdomain.co.uk.
myfirstdomain.co.uk.     59      IN      A       www.xxx.yyy.zzz

;; Query time: 298 msec …
Run Code Online (Sandbox Code Playgroud)

domain-name-system dyndns cname-record 1and1

15
推荐指数
1
解决办法
2万
查看次数

“zpool replace”挂起并锁定池

考虑到我的四个磁盘 RAIDZ1,一个磁盘在物理上变得嘈杂,还没有产生错误,但听起来也不健康。所以我选择先发制人地更换它。

我已经做好了:

zpool offline tank0 ad6
Run Code Online (Sandbox Code Playgroud)

关闭、移除和更换磁盘

zpool replace tank0 ad6 ad6
Run Code Online (Sandbox Code Playgroud)

永远挂起。

zpool status也永远挂起,就像zpool history

如果我在移除磁盘的情况下重新启动机器,则一切正常,按预期在降级模式下运行。

现在我该怎么做?担心,因为我的数据现在容易受到单个磁盘故障的影响。

操作系统是 FreeBSD 7.3-RELEASE-p1 - 又名 FreeNAS 7.0.2.5226

我刚刚在 VM 中尝试了相同的操作,尽管 FreeBSD 7.3-RELEASE-p7(FreeNAS 0.7.2.8191,稍晚的版本) - 完美运行。尝试使用我现在可以找到的最旧版本的 FreeNAS (7.0.2.5799),稍后会更新。

另外,zpool replace不需要文件系统使用吗?NAS 上的另一个守护程序可能正在使用该文件系统。我认为这没问题,但这当然可能是错误的。


更新,2012-01-10

我用 FreeNAS 8 启动了机器并做了zpool replace- 启动,并立即开始抛出成堆的数据损坏错误和内核恐慌 - 尽管每周清理池从未发现任何问题。我不认为我做了任何愚蠢的事情,比如告诉它更换错误的磁盘。我立即发出,shutdown -h因为我知道数据很好。

无论如何,我现在有一个降级的池,停留在替换暂停的状态,我正在将我的数据复制到一个 3TB 的外部驱动器,这是一个花费巨大的购买,所以我可以销毁池并重新开始。值得庆幸的是,数据看起来不错——我碰巧有大约 100GB 的文件的 md5sums,到目前为止似乎完好无损,而且我已经设法恢复了所有真正不可替代的东西。

我现在正在等待更多 RAM 的到来,因为 FreeNAS 8 不断因 kmem_max 太小错误而恐慌,我似乎无法调整这些错误,并且机器受到 RAM 限制(1 GB RAM 用于 4TB …

freebsd zfs sata freenas

8
推荐指数
1
解决办法
3687
查看次数

ZFS 文件系统上的可用空间意外丢失

将完全改写这个问题,因为几个月后它仍然是一个悬而未决的生产问题。

我有一个基于 FreeBSD 7.3-RELEASE-p1 的 FreeNAS 0.7.2 盒,在 RAIDz1 中运行带有 4x1TB SATA 驱动器的 ZFS。

创建和删除 1TB 稀疏文件后,我似乎丢失了 1TB 的可用空间。这发生在几个月前。

这张表列出了目前的情况。

command         actual             expected           ok/not ok

du -c           1.47TB used        1.47TB used        ok

zfs list        used 2.48TB        used 1.47TB        not ok
                avail 206GB        avail 1.2TB        not ok

zpool list      size 3.64TB        size 3.64TB        ok
                used 3.31TB        used 1.95TB        not ok
                avail 334GB        avail 1.69TB       not ok

Windows right   Disk size 2.67TB   Disk size 2.67TB   ok
  click disk,   Used 2.47TB        Used 1.47 …
Run Code Online (Sandbox Code Playgroud)

freebsd files zfs filesystems freenas

6
推荐指数
1
解决办法
2万
查看次数

Windows 无法访问 GPO CN={31B2F340-016D-11D2-945F-00C04FB984F9} 的文件 gpt.ini

我正处于从 Windows SBS 2003 到 Server 2003 Standard 的“摇摆”迁移过程中。

到目前为止一切顺利,但我们在客户端计算机上收到事件 1058:

Windows 无法访问 GPO CN={31B2F340-016D-11D2-945F-00C04FB984F9}、CN=Policies、CN=System、DC=Edgebyte、DC=local 的文件 gpt.ini。该文件必须位于 <\ourdomain.local\sysvol\ourdomain.local\Policies{31B2F340-016D-11D2-945F-00C04FB984F9}\gpt.ini> 位置。(该系统找不到指定的路径。 )。组策略处理已中止。

登录工作正常,但没有在任何地方应用组策略。

回顾最初的 SBS 框,如果您进入组策略管理,每当您尝试右键单击 GPO 并单击“编辑”时,您都会收到“找不到文件”消息。我怀疑这已经被破坏了很长时间(迁移的部分目的是更换硬件,这是可疑的)。

我们不关心保留任何组策略(反正没有那么多) - 所以我只需要知道如何从 Server 2003 标准中删除所有组策略,并重新生成 sysvol 中 Policies 文件夹的内容,这样我们就可以从头开始。

有接受者吗?

汤姆

migration group-policy windows-event-log windows-sbs-2003

5
推荐指数
1
解决办法
1万
查看次数

iptables 日志泛滥 /var/log/messages

我正在运行 Ubuntu Server,最近它被设置为 NAT 路由器。

我有一个 iptables 脚本,它在启动期间运行以设置 NAT、端口转发等。

我正在尝试诊断与该框无关的问题,但是 /var/log/messages、/var/log/syslog 和 /var/log/kern.log 都充斥着来自 iptables 的消息,如下所示:

Oct 21 11:25:27 skip kernel: [39380.812663] INPUT packet died: IN=eth1 OUT= MAC=00:40:63:d9:7c:5b:00:03:fa:a9:d7:4a:08:00 SRC=24.207.21.237 DST=94.192.123.123 LEN=111 TOS=0x00 PREC=0x00 TTL=54 ID=16494 PROTO=UDP SPT=48865 DPT=20663 LEN=91
Run Code Online (Sandbox Code Playgroud)

我找不到任何说明如何更改 iptables 日志输出方式的文档。我理想中想要的是没有任何 iptables 内容转到上述任何文件,而是转到 /var/log/iptables。

ubuntu iptables log-files

4
推荐指数
1
解决办法
2689
查看次数

如何在 Postfix 中记录被拒绝的消息

刚刚上线了一个新的 Postfix 邮件服务器,它位于一个 Exchange 框前,仅用于接收入站邮件。

它被设置为拒绝未知收件人的电子邮件,这很好用,但我想得到一个准确的目标电子邮件地址被拒绝的日志,以确保没有遗漏任何域/收件人。

我有一个谷歌,但出现空白。有没有一种体面的简单方法来做到这一点?

谢谢。

smtp postfix log-files

2
推荐指数
1
解决办法
1万
查看次数

我可以在 Exchange 2007 中在服务器端强制执行邮件规则吗?

我有一个客户将大量垃圾邮件发送到他们的公共 IP。

我在它前面放了一个运行 exim 和 spamassassin 的 Linux 机器,还有一堆 Outlook 规则,当 spamassassin 认为它看到垃圾邮件时,将邮件移动到垃圾邮件文件夹中。这工作得很好。

现在我已将它们迁移到 Exchange 2007,是否有更好的方法在服务器端为每个人“强制执行”这些 Outlook 规则?

(Spamassassin 的工作原理是在收到的电子邮件中插入标题。这是一些详细信息。)

谢谢
汤姆

编辑:标题从“Exchange 2007 前的Spamassassin / exim”更改(按照明智的建议)

exchange spam spamassassin exim

1
推荐指数
1
解决办法
4737
查看次数