我不太了解服务器,但是我知道在硬件方面可以通过很多方法提高运行Web应用程序的性能。 例如,从一台服务器开始,您可以: 将数据库移到另一台服务器上。 将静态文件移动到CDN上 在负载均衡器后面使用多个Web服务器。 但是,如何扩展数据库服务器呢? 你可以有多个服务器运行相同的数据库? 如果是这样,通常如何工作? 我了解负载平衡器/多个Web服务器如何工作,但是可以将相同的方法应用于数据库服务器吗?
我现在有一个四核心的Xeon,8GB内存,只有2个1TB的SATA驱动器。 我想弄清楚如何扩展我的应用程序来尽可能地处理尽可能多的负载和stream量。 我有一个行业网站,目前每天约有30,000的注册,每天6万的UV,以及600-1,000,000次的综合浏览量。 速度太慢了,我不得不closures服务器,现在我正在亏钱和stream量。 我相当确定的一部分是PHP代码和MySQL查询(从印度雇用他们)。 我可以做些什么来优化和确保服务器处理尽可能多的stream量,而不会造成瓶颈。 因为我期望每天都有更多的注册。 这是一个非常密集的数据库站点,因为它是某个特定领域的“networking”站点,您必须login,因此所有事情都围绕MySQL进行。 PS。 CentOS 5 64bit,PHP5,MySQL5。 我知道数据库是MyISAM,我很确定他们没有太好的索引表。 感谢您的build议!
出于某种原因,我不能让DTA连接到我的开发机器。 它连接到一个远程数据库就好,但是当我指向我的开发机器时,我得到一个错误: 无法初始化MSDB数据库进行调整(退出代码:-1073741819)。 我敢肯定,这不是一个权限问题,因为我已经使用探查器来捕获它正在做什么,它所运行的所有命令看起来都很好,正在我的帐户下运行,这是与sysadminangular色关联的,当我运行他们在SQLpipe理工作室他们通过罚款。 我相当相信,这个问题是相关的创build在DTA中使用的MSDB中的对象,但我尝试手动创build这些(我在网上find脚本),它似乎只是稍微推动问题。 我走出了我的脑海 – 甚至尝试重新安装SQL,但是这不是固定的。 我在Windows Server 2008上使用SQL 2008 SP1(10.0.2531)(已修补到目前为止)。 救我!!!!!
最近我在项目上,需要大的可扩展性。 现在,我的架构由4个服务器组成 – 1个负载均衡服务器,2个应用服务器和1个数据库服务器。 什么是configuration这些不同types的服务器(CPU,RAM,磁盘等)的硬件规格的最佳做法? 你会怎么做?
我有几个网站stream量非常高 – 所有托pipe在Heroku上,所有这些网站都访问一个db.m1.large mySQL Amazon RDS实例 – 并且希望知道升级到具有更高处理能力的实例是否会带来性能优势或记忆。 下面的屏幕截图显示了这些指标的样子。 这是分析问题的正确方法吗?如果是这样,是否表明有需要升级?
我有一个小的MongoDB副本集(2.4.6),似乎每周大约一次,主要是陷入泥潭,平均负载高峰。 这个应用程序没有看到大量的stream量。 它驻留在EC2中,是一个M1.medium(1个CPU,3.7 GB RAM)。 我们已经安装了彩信,运营商永远不会超过25-30。 页面错误非常小(.002-0.003)。 有零排队。 平均负荷平均值在1以下,但当这些峰值发生时,平均值为2-4。 查询显示从500ms-1700ms发生。 没有复制滞后。 当我尾巴的日志,我看到这个: Mon Mar 17 17:16:48.342 [conn62561] warning: ClientCursor::yield can't unlock b/c of recursive lock ns: db_name.jobs top: { opid: 2507609, active: true, secs_running: 0, op: "query", ns: "db_name", query: { findandmodify: "jobs", query: { status: "queued", queue: "upload_hostname" }, sort: { enqueued: 1 }, […]
性能比我想在MySQL服务器上慢一点,我们不使用复制,也不需要时间点恢复。 所以一个推荐的提高性能的方法似乎是closuresbin-logging。 我在my.cnf中有以下内容: ## Replication / Transaction Logging # binlog_format = row log-bin = /var/lib/mysql/mysql-bin.log expire_logs_days = 3 sync-binlog = 1 我注释了所有四行,并重新启动MySQL。 该服务启动正常,没有任何问题在任何错误日志或缓慢的查询日志中显示。 除了写入性能降低到无法使用的水平之外,一切看起来都很好。 它确实继续工作。 取消注释上述四行并重新启动服务立即恢复以前的性能级别。 以前的性能水平并不是我想要的,但我希望在closuresbin-logging的情况下,希望能够提高性能。 为什么会发生? 如何成功closures垃圾箱logging以获得性能? 眼镜: 所有的表都是innodb(一些相当大的) mysql版本14.14 Distrib 5.6.19,用于使用EditLine wrapper的debian-linux-gnu(x86_64) Ubuntu 12.04 LTS服务器
我设置了一个简单的数据采集器与性能监视器来收集处理器时间(CPU使用率%)和SQL统计:批量请求/秒@ 15秒间隔,看看我能得到一些基线和报告给我们的供应商。 7月6日下午2点30分我开始了柜台。 它logging了7月7日上午12:15的罚款,然后处理器时间计数器停止logging,但批处理请求/秒仍然计数。 它总共logging了2332行没有任何空白,然后比处理器时间计数器停止logging。 (7日7点15分到12点18分之间的批量请求计数器有7个小的差距,但是会继续下降到10k行以上)。 它的设置写入一个csv。 我不止一次地重build了这个perfmon计数器。 以前,我在数据收集器(磁盘IO,networkingIO,AVL内存…)中有其他多个其他计数器,并发生了相同的问题(CPU时间将停止logging一定时间后或批量请求;所有其他计数器似乎没有受到影响)。 我有一个单独的数据收集器,只有我们的多个应用程序服务器的处理器时间计数器,似乎运行良好,没有任何缺less的值。 有没有人看到与性能计数器类似的问题,只是停止logging特定的柜台? 我应该尝试增加间隔1分钟,而不是15秒?
我有一台不断从硬盘读取数据的Sybase 15服务器。 我注意到sqlsrvr.exe是主要的数据库引擎的罪魁祸首。 这是一个相当有用的服务器,运行一个32位的实例,这意味着进程只能使用3GB的内存(它使用全部3GB)。 运行sysinternals进程监视器工具后,确定服务正在读取数据库数据文件(\ data \ instance * .dat文件),每分钟调整3,000-4,000次。 性能监视观察到磁盘空闲时间只有15%,并具有恒定的I / O。 我担心数据库有一些types的内存pipe理问题,或者随着时间的推移已经过度使用。 Sybase运行起来不正常吗? 我们真的没有一个性能问题\投诉。 对于这样的问题,下一步通常要进行哪些调查?
我们正在调查我们的虚拟机中的I / O负载以及对其进行优化的可能性,并且显示大部分负载是由PostgreSQL的统计收集器生成的。 它跳跃3,5和6,5 MB /秒。 我已经在这个主题上find了一些有趣的资源 ,他们build议使用tmpfs把大部分统计数据保存在内存中,这对我来说是有意义的,具体的虚拟机有足够的RAM来支持这种情况。 来源1说以下内容: 重新启动后,PostgreSQL将把这些文件复制到新的位置(当它停止时返回)。 这与stats_temp_directory的configuration名称中的temp结合听起来就像数据在其他地方持久化一样。 那么在Postgres进程不干净的情况下,临时数据会发生什么? 如果这个过程在最后一周没有任何问题,它会完全丢失吗? 或者,Postgres在运行时是否定期保存临时目录之外的数据? 可能在不干净的关机后简单地使用可用的临时数据? 我在问,因为目前一旦写入的数据被保存在本地文件系统中,并且用于写入数据的操作似乎是primefaces性的,但是如果我们切换到使用tmpfs,那么如果整个服务器出现故障,那么数周的统计数据可能会丢失一些原因。 有没有办法让Postgres定期在tmpfs之外保存数据,就像每隔一小时左右一次? 或者,我需要使用一些覆盖/堆叠/任何文件系统,将持久的一个更低,tmpfs更高,并find一些手动同步手动一次? 谢谢!