我有一个UINavigationController
嵌套的实例UITabBarController
.我使用导航控制器到达某个视图控制器(标签栏仍然可见),从中我切换到第二个视图控制器(标签栏不再可见).
在第二个视图控制器中,只要我调用:
[self.navigationController setToolbarHidden:NO]
应用程序冻结并且内存增长,直到OOM异常崩溃.
我承认不建议将导航控制器嵌套在标签栏中,但是这个设置似乎在iOS 11之前正常工作.
编辑:当停止执行时,我看到很多调用:
UIView(UIConstraintBasedLayout)
UIView(AdditionalLayerSupport)
NSLayoutConstraint
这是完整的堆栈跟踪
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x0000000106dd895c libobjc.A.dylib`objc_msgSend
+ 28
frame #1: 0x00000001067b6b9b Foundation`-[NSConcreteMapTable removeObjectForKey:] + 138
frame #2: 0x00000001069e6019 Foundation`_substituteOutAllOccurencesOfBodyVar + 1282
frame #3: 0x00000001067f3c5b Foundation`-[NSISEngine tryAddingDirectly:] + 144
frame #4: 0x00000001067f332f Foundation`-[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:]
+ 440
frame #5: 0x00000001069f2067 Foundation`-[NSLayoutConstraint _addLoweredExpression:toEngine:integralizationAdjustment:lastLoweredConstantWasRounded:mutuallyExclusiveConstraints:]
+ 273
frame #6: 0x00000001067ea601 Foundation`-[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] + 240
frame #7: 0x0000000109c9488d UIKit`__57-[UIView(AdditionalLayoutSupport) …
Run Code Online (Sandbox Code Playgroud) 在PostgreSQL 9.5中,我决定创建一个物化视图“效果”,并计划每小时进行一次并发刷新,因为我希望它始终可用:
REFRESH MATERIALIZED VIEW CONCURRENTLY effects;
Run Code Online (Sandbox Code Playgroud)
在开始的时候,一切都运行良好,我的实例化视图令人耳目一新,磁盘空间使用大致保持不变。
但是,一段时间后,磁盘使用率开始线性增长。
我已经得出结论,这种增长的原因是物化视图,并从该答案中运行查询以得到以下结果:
what | bytes/ct | bytes_pretty | bytes_per_row
-----------------------------------+-------------+--------------+---------------
core_relation_size | 32224567296 | 30 GB | 21140
visibility_map | 991232 | 968 kB | 0
free_space_map | 7938048 | 7752 kB | 5
table_size_incl_toast | 32233504768 | 30 GB | 21146
indexes_size | 22975922176 | 21 GB | 15073
total_size_incl_toast_and_indexes | 55209426944 | 51 GB | 36220
live_rows_in_text_representation | 316152215 | 302 MB | 207
------------------------------ …
Run Code Online (Sandbox Code Playgroud) postgresql materialized-views vacuum postgresql-9.5 autovacuum
我有一个使用 EventStream 的 ReactJS 客户端和一个实现 SSE 的 golang 后端。
当我将浏览器连接到在 localhost 上运行的后端时,以及当我的后端在带有端口转发的 k8s 上运行时,一切似乎都正常。
一旦我使用主机名创建入口(这样我就不必一直进行端口转发),SSE 就停止工作。我仍然看到客户端发送请求,并且该请求被后端接收并注册。但是,当发送事件时,它永远不会到达我的 ReactJS 应用程序。
我附上后端 SSE 实现的代码:
package sse
import (
"encoding/json"
"fmt"
"net/http"
"time"
"go.uber.org/zap"
"github.com/talon-one/towers/controller/api/log"
)
// the amount of time to wait when pushing a message to
// a slow client or a client that closed after `range clients` started.
const patience time.Duration = time.Second * 2
type customerStateUpdate struct {
sseEvent
CustomerName string `json:"customer_name"`
CustomerState string `json:"customer_state"`
}
type contentUpdate struct { …
Run Code Online (Sandbox Code Playgroud) 我们的团队提出了206 - Partial Content
在 REST API 中使用状态代码的想法,以指示GET
对大型数据集的请求比返回的内容更多,以便允许 API 用户进行分页。hasMore
这将是我们当前在响应正文中使用的标志的替代方案。
pageSize
数字查询参数,因此通信可能不正确,206 - Partial Content
因为响应包含查询参数请求的所有结果pageSize
。206 - Partial Content
通常用于字节流,而不是集合列表。在哪些情况下可以或应该 206 - Partial Content
用于响应静态GET
请求而发送的结果集的分页?
如果我正确理解 Kubernetes OOM 杀死 pod 或容器的条件(来自 komodor.com):
如果容器使用的内存超过其内存限制,则会以 OOMKilled 状态终止。同样,如果节点上所有容器或所有 pod 的总体内存使用量超过定义的限制,则一个或多个 pod 可能会被终止。
这意味着,如果 Pod 中的容器超过总内存,它将被杀死(容器),但 Pod 本身不会被杀死。同样,如果一个 Pod 中有多个容器,并且该 Pod 本身超出了其内存限制(即该 Pod 中所有容器的内存限制之和),则该 Pod 将被 OOM 杀死。然而,只有当其中一个容器超过其内存限额时,后一种情况才可能出现。这样的话——容器不是会先被杀死吗?
我试图了解 pod 而不是容器被 OOM 杀死的实际情况。
我还注意到,当 Pod 中有一个容器并且该容器反复超出其内存限额时,Pod 和容器会间歇性地被终止。我观察到这一点 -容器将重新启动,这可以通过观察 Pod 中的日志来观察到,并且每隔一次 - Pod就会被终止并重新启动,从而增加其重新启动计数。
如果它有助于理解行为 - Pod 的 QOS 类别是Burstable
。
在我的 REST 端点上收到请求后,我想回复状态200
和连续生成和刷新的数据主体(从数据库获取,可能非常大)。我正在寻找一种使用Gorilla Mux的有效方法,因为它已在整个项目中使用。
我看到了,这是可能的Labstack回声,因为它的ResponseWriter
支持 http.Flusher
(界面允许HTTP处理程序,以冲洗缓冲的数据到客户端)。不幸的是,似乎大猩猩的ResponseWriter
不支持这一点。
问题:
不变量:
WebSockets
并且应该将解决方案与 REST API 集成。go ×2
kubernetes ×2
rest ×2
autovacuum ×1
containers ×1
endpoint ×1
eventsource ×1
flush ×1
http ×1
ios ×1
ios11 ×1
iphone ×1
mux ×1
objective-c ×1
pagination ×1
postgresql ×1
qos ×1
reactjs ×1
vacuum ×1