- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在构建我的第一个 REST API,它基于一个 RSS 聚合器。我使用 MemoryBasedDB 或 PostgresDB 这两个特征之一来实现它。在每次访问根 url 时,它都会对提要进行异步调用以获取最新文章,并将其作为 XML 字符串返回以进行解析。解析后作为 Article 对象保存在数据库中。
从功能上讲,这对我来说都很好。但是,当使用 weighttp 或 gatling 进行负载测试时,它将在 1k 请求/1k 并发用户下使用 Postgres 失败,如下所示:
在 weighttp 中:
error: read() failed: Connection reset by peer (104)
final [WARN] [09/21/2014 14:45:27.224] [on-spray-can-akka.actor.default-dispatcher-36] [akka://on-spray-can/user/IO-HTTP/listener-0/523] Configured registration timeout of 1 second expired, stopping
case class Article(id: Option[String], idint: Option[Int], title: String, author: String, published: String, updated: String, `abstract`: Option[String], content: Option[String], link: Option[String])
trait PostgresDB extends Schema {
val articles = table[Article]("articles")
on(articles)(e => declare(e.idint is(unique)))
def create(x: Article) = inTransaction {
articles.insert(x)
}
def getAll: Set[Article] = inTransaction {
from(articles)(article => select(article)).toSet
}
def getArticle(x: Int) = inTransaction {
from(articles)(article => where(article.idint === Some(x)) select(article)).toList(0)
}
def printy = transaction {
articles.schema.printDdl(println(_))
}
}
最佳答案
是的,我同意@experquiste,为数据库参与者提供自己的调度程序,并将其线程池大小和参与者数量调整为您的数据库可以处理的并发请求数。在此前面放置一个路由器。您应该测量数据库服务器磁盘队列长度。这在持续的高负载下应该是稳定的,不断添加线程直到队列开始增长。
另一种方法是为您的数据库访问层使用线程池和 future 。它似乎更容易配置,但缺乏监督和错误恢复。
http://www.chrisstucchio.com/blog/2013/actors_vs_futures.html就我个人而言,我仍然使用 Actor 进行并发。
我从未使用过 squeryl,inTransaction block 是否创建数据库事务?您显示的数据库特征似乎不需要事务,您是否尝试过没有它们。
关于scala - REST (Squeryl/Akka/Spray) - 非常低的吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963270/
我不确定 squeryl 在这里想告诉我什么: 错误:无法证明 org.squeryl.dsl.fsm.Unconditioned =:= org.squeryl.dsl.fsm.Conditione
当我在 squeryl 中创建查询时,它返回一个 Query[T] 对象。查询尚未执行,当我迭代 Query 对象时(Query[T] 扩展 Iterable[T]),查询尚未执行。 围绕查询的执行必
我在 mysql 数据库中有一个名为 group 的表。当我将此表映射到 squeryl 时,我收到 SQL 语法错误,因为表名组没有被引用(应该是 select * from `group`)。 有
如何在 squeryl 模式中定义列组合的唯一约束? A | B 2 1 allow 2 3 allow 3 1 allow 2 1 don't allo
我正在编写一个简单的 Scala 和 Squeryl 应用程序。出于测试目的,每次我在 sbt 中运行“test”时,都会创建一个内存中的 H2 数据库并填充测试数据。每次运行后,我可以看到任务管理器
如何在 squeryl 模式中定义列组合的唯一约束? A | B 2 1 allow 2 3 allow 3 1 allow 2 1 don't allo
如何使用 squeryl 存储用户案例对象?我有一个 Account 对象,其权限字段类型为 Permission(定义为密封特征)。我还有 2 个案例对象(Administrator 和 Norma
如何使用 Squeryl 保留集合字段(例如 List[String] 或 Set[Int] )?编码它以便 Squeryl 不会创建关联表的最佳方法是什么? 最佳答案 您也许应该考虑编写自己的类型。
我正在使用Squeryl使用 MySQL 数据库。这些表采用 utf8mb4 编码。现在我想通过Squeryl将一些utf8(4字节)字符串插入到数据库中。我该怎么做? 我尝试将 ?useUnicod
使用 Play ! 1.2.4、Scala 和 Squeryl 与 Postgres 像往常一样执行一个简单的数据库插入,突然间数据库开始疯狂地抛出 NullPointerExceptions。当我创
我正在尝试将 Card 与 Part 连接起来,然后将总 Stock 值左连接到一个部分(有些部分没有库存行)。 我有以下我认为可行的.. def stockPerBase = from(stock)
我想使用 VARCHAR(255) 或 TEXT MySQL 数据类型来存储科学文章的名称。Squeryl 创建 VARCHAR(128) 字段来存储字符串。如何配置它以使用更大的字段? 最佳答案 来
我研究了使用 squeryl 从表中删除所有记录的方法。我唯一能想到的就是 myTable.deleteWhere(r => r.id.isNotNull) //id is the primary
如何使用 Squeryl 设置事务隔离级别? 例如,现在我正在使用 Postgresql 并且需要对特定的单个事务进行可序列化隔离。我将纯 Squeryl 和 Squeryl-Record 与 Lif
我正在学习 Squeryl 并试图理解“使用”语法,但找不到关于它的文档。 在以下示例中,创建了两个数据库,A 包含单词 您好 , B 包含 再见 .目的是查询A的内容,然后追加单词世界 并将结果写入
我正在尝试在查询中选择某个表的全部。我必须指定一个 where 子句(或者我 tihnk),那里面有什么? def all() = transaction { from(AppDB.users)(s
做一个简单的 Squeryl 数据库查找,但试图排除一个值。我试过了: j.id not jobExclude和 j.id != jobExclude 但是第一个触发编译器错误,第二个触发运行时错误。
所以当我阅读 Play for Scala本书,我遇到了书中解释的一些奇怪的事情。这是相关的片段: There's something strange going on, though. If you
我无法调试(简单运行即可正常)我的单元测试。 Squeryl 失败并出现以下异常: error while reflecting on metadata for (Some(private scala
有人可以告诉我如何在 squeryl 中显式处理事务回滚吗? 我们如何动态添加或删除 squeryl 中的列? 谢谢... 最佳答案 只是为了详细说明@didierd 的回复。每个事务都绑定(bind
我是一名优秀的程序员,十分优秀!