เริ่มต้นใช้งานแดชบอร์ด

ไม่ควรมีใครต้องอยู่เวร on-call

Polylane ค้นหาปัญหาในแอปของคุณและแก้ไขให้คุณโดยอัตโนมัติ

ทีมที่คุณไว้วางใจ ไว้วางใจเรา


Polylane ขับเคลื่อนจากปัญหาไปสู่การแก้ไข ทุกข้อผิดพลาดและความผิดปกติได้รับการตรวจสอบและแก้ไข คุณได้รับ PR

Restore Hyperdrive pool size in checkout-edge

Imagecoreplane/checkout-edge#142PolylaneCritical severityOpened 3 hours agoCI passing
ImageDismissMerge
Files changedInvestigation
src/hyperdrive/pool.ts
@@ -14,21 +14,29 @@ export class HyperdrivePool {
1414 #inFlight = 0;
1515
16- constructor(private readonly binding: Hyperdrive) {
17- this.#ceiling = DEFAULT_CEILING;
16+ constructor(
17+ private readonly binding: Hyperdrive,
18+ private readonly ceiling = poolCeiling(binding),
19+ ) {
20+ if (this.ceiling < MIN_CEILING) {
21+ throw new PoolMisconfigured(this.ceiling, MIN_CEILING);
22+ }
1823 }
1924
2025 async acquire(signal: AbortSignal): Promise<Connection> {
21- while (this.#inFlight >= this.#ceiling) {
22- await this.#queue.wait();
26+ if (this.#inFlight >= this.ceiling) {
27+ queueDepth.record(this.#queue.size, { binding: this.binding.id });
28+ if (this.#queue.size > this.ceiling * QUEUE_ALARM_RATIO) {
29+ logger.warn("hyperdrive pool saturated", {
30+ ceiling: this.ceiling,
31+ waiting: this.#queue.size,
32+ });
33+ }
34+ await this.#queue.wait(signal);
2335 }
2436 this.#inFlight += 1;
2537 return this.binding.connect();
2638 }
@@ -41,9 +53,13 @@ export class HyperdrivePool {
4153 release(connection: Connection): void {
4254 this.#inFlight -= 1;
43- this.#queue.next();
55+ queueDepth.record(this.#queue.size, { binding: this.binding.id });
56+ this.#queue.next();
4457 }
4558
46- get saturated(): boolean {
47- return this.#inFlight >= this.#ceiling;
59+ get saturated(): boolean {
60+ return this.#inFlight >= this.ceiling;
4861 }
4962}
@@ -58,14 +71,18 @@ function poolCeiling(binding: Hyperdrive) {
58- const configured = binding.maxConnections;
59- if (!configured) return DEFAULT_CEILING;
60- return configured;
71+ const configured = binding.maxConnections ?? DEFAULT_CEILING;
72+ // The binding's ceiling is the contract: a worker that opens more
73+ // connections than the pool allows queues here instead of at the origin,
74+ // which is invisible in origin latency. Fail loudly at boot instead.
75+ return Math.max(configured, MIN_CEILING);
6176}
6277
63-export const DEFAULT_CEILING = 5;
64-export const QUEUE_ALARM_RATIO = 4;
78+export const DEFAULT_CEILING = 50;
79+export const MIN_CEILING = 25;
80+export const QUEUE_ALARM_RATIO = 0.5;
6581
66-const queueDepth = noopCounter();
67-const logger = console;
82+const queueDepth = meter.createHistogram("hyperdrive.queue_depth");
6883
Ask about this pull request

มันทำแผนที่แอปของคุณอย่างครบถ้วน ตั้งแต่คลาวด์ไปจนถึงโค้ด services, repo และ providers ทั้งหมดอยู่ใน context graph เดียวที่ขับเคลื่อนทุกอย่าง

ใช้งานร่วมกับ:

  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
Topology
Search your cloud resources...
Galaxy
Imagecheckout-edgeWorker
CriticalCritical to your architecture.

Issue hotspot: 4 issues in the last 7 days

Change hotspot: 12 changes in the last 7 days

Cloudflare · coreplane · earth·Compute
Imagehd-prodHyperdrive
CriticalCritical to your architecture.

Change hotspot: 7 changes in the last 7 days

Cloudflare · coreplane · earth·Databases
Imageingest-eventsLambda function
StandardImportant to your architecture.

Issue hotspot: 2 issues in the last 7 days

AWS · coreplane-prod · us-east-1·Compute
Imagepayments-dbDatabase
CriticalCritical to your architecture.

Issue hotspot: 1 issue in the last 7 days

Change hotspot: 3 changes in the last 7 days

PlanetScale · coreplane · us-east·Databases

มันป้องกันไม่ให้โค้ดลวกๆ ไปถึง prod การเปลี่ยนแปลงโค้ดทั้งหมด ไม่ว่าจากบอทหรือวิศวกร จะได้รับการรีวิวเทียบกับ telemetry จริง

github.com/coreplane/orders-api/pull/482

ImageAdd trigram index for order search #482

Openrvidal wants to merge 1 commit into main from order-search-trgm
Conversation1Commits1Checks2Files changed1
polylanebotcommented 2 minutes ago···
Caution

Merging this pull request may degrade production (high impact).

Merging this blocks every write to orders while the index builds. migrations/0114_order_search_trgm.sql:3 adds CREATE INDEX … USING gin (search_text gin_trgm_ops) without CONCURRENTLY, and a plain CREATE INDEX takes a full write lock on orders for the whole build. Checkout sustains ~38 writes/s on that table; each one queues behind the lock until the build finishes.

To make this safe: build the index with CREATE INDEX CONCURRENTLY outside the transactional migration.

orders-db · writes per second · last 48h
02040
-48h-24hnow
every one of these writes blocks while the index builds

Polylane analysed de91b47 for production impact.

Some checks were not successful1 failing and 1 successful check
ci / testSuccessful in 2m 4sDetails
Polylane production impactNon-concurrent index build locks writes on ordersDetails
Merging is blocked

มันพร้อมตอบคำถามของคุณตลอดเวลา มันรู้จักแอปของคุณ และจะขุดคุ้ยข้อมูลให้คุณอย่างไม่รู้จักเหน็ดเหนื่อย

Image# engineering
MessagesAdd canvasFiles & links
Image
boris2:09 AM

checkout feels slow. is that us or payments-api?

Image
PolylaneAgent2:09 AM

Us. checkout-edge Wall Time P99 is 18× its own baseline and the requests are queuing for a Hyperdrive connection, not on a downstream call.payments-api is answering in 180ms, flat for a week. Deploy 9f3c2a1 at 2:02 AM shrank the hd-prod pool from 50 connections to 5.

👀 2
Image
aleksandr2:11 AM

how long has it been queueing like that?

Image
PolylaneAgent2:11 AM

Nine minutes, since the deploy landed. It never went above 2 before that. I submitted a PR fix and tagged@justin to deploy 2 minutes ago.

hd-prod · pool queue depth · last 30mdeploy 9f3c2a1
02040
-30m-15mnow
every request in that queue is a checkout waiting

Open in PolylaneConfigure

และมันแบ่งปัน insight ให้กับเอเจนต์อื่นๆ เลเยอร์ context การทำงานจริงใหม่สำหรับเอเจนต์เขียนโค้ดของคุณ ผ่าน MCP หรือ CLI

Imageclaude — ~/checkout-edge

> make region a required field on the checkout request schema

●polylane · searchcallers of POST /checkout

●polylane · runToolqueryLogs · request shapes

⏺Hold on: cart-svc and edge-gateway still send region-less requests,41,200 in the last 24h. Requiring it now would 400 them both.

Safer: default it, migrate the two callers, then require.

Are you okay with this plan?

❯ 1. Yes, default it and migrate both callers

❯ 2. Yes, but require it now and let them 400

❯ 3. No, tell Claude what to do differently (esc)

ไม่ต้องย้ายระบบ ไม่ต้องใช้ SDK ใหม่ Polylane เสียบเข้ากับสิ่งที่คุณรันอยู่แล้ว

สร้างโดยวิศวกรที่เคยถือ pager จาก Cloudflare, Webflow, Groq, Twilio, Uber และ Robinhood

CloudflareCloudflareWebflowWebflowGroqGroqTwilioTwilioUberUberRobinhoodRobinhood
"ผมใช้เวลาหลายปีสร้างแพลตฟอร์ม observability ที่ Baselime และต่อมาที่ Cloudflare เครื่องมือของเรายังแย่มากในการหาว่าอะไรพัง และแก้อะไรด้วยตัวเองไม่ได้เลย on-call ยังคงพัง ผมกำลังแก้มัน"
Boris Tane
Boris Tane
ผู้ก่อตั้ง

เรากำลังทำให้ซอฟต์แวร์ดูแลตัวเองได้ มาร่วมทีมกับเรา

ความไว้วางใจต่อรองไม่ได้

AICPA SOC 2

SOC 2 Type II

มาตรการควบคุมความปลอดภัยที่ผ่านการตรวจสอบโดยอิสระ

ISO 27001

ISO 27001:2022

มาตรฐานสากลสำหรับการจัดการความมั่นคงปลอดภัยของข้อมูล

การเข้ารหัสตั้งแต่ต้นจนจบ

AES-256 ขณะจัดเก็บ, TLS 1.2+ ขณะส่ง

การแยกข้อมูล

แยกอย่างสมบูรณ์ต่อองค์กร

ดู Trust Center

เริ่มต้นใช้งาน Polylane

Polylane CLI

คำถามที่พบบ่อย

Polylane คืออะไร

Polylane ทำให้ซอฟต์แวร์ของคุณดูแลตัวเองได้ เอเจนต์ AI เรียนรู้ทุกอย่างที่คุณรัน แก้ไขสิ่งที่แก้ได้ รีวิวการเปลี่ยนแปลงโค้ดทุกครั้งเทียบกับ production ที่ deploy ไป ตอบคำถามที่คน on-call มักได้รับ และให้ context การทำงานจริงชุดเดียวกันแก่เอเจนต์เขียนโค้ดของคุณ

Polylane ตรวจจับปัญหาอย่างไร

เอเจนต์อ่าน metric, log และ trace ของคุณตามรอบเวลา แล้วตัดสินโดยเทียบกับพฤติกรรมปกติของแต่ละทรัพยากร สิ่งใดก็ตามที่ทีมของคุณทำเป็นกราฟอยู่แล้วจะกลายเป็น check

Polylane เปลี่ยน production โดยไม่ผ่านการรีวิวหรือไม่

ไม่ใช่ ทุกการเขียนจะหยุดรอการอนุมัติจากคุณ พร้อมแสดงคำขอที่แน่นอนบนหน้าจอ และการเปลี่ยนแปลงโค้ดจะมาในรูปแบบ pull request ที่ผ่านการรีวิวของคุณและด่าน CI ของคุณ

Polylane ทำงานร่วมกับอะไรได้บ้าง

AWS, Cloudflare, Vercel, Fly.io, Render, Kubernetes, PlanetScale, Railway, Supabase, Modal, Convex, ClickHouse และ Turso รวมถึง GitHub, Slack และเครื่องมือ observability ของคุณ: Datadog, Honeycomb, Axiom, Grafana Cloud, Sentry, Better Stack, OpenStatus และ Logfire

ฉันจะใช้ Polylane ได้เมื่อใด

ตอนนี้เลย คำสั่งเดียวติดตั้ง CLI เชื่อมต่อเอเจนต์เขียนโค้ดของคุณ และสร้างบัญชีให้: รัน curl -fsSL https://polylane.com/setup | bash บน macOS หรือ Linux

เอเจนต์ AI ใช้ Polylane ได้ไหม

มี มี REST API ที่ api.polylane.com และเซิร์ฟเวอร์ MCP ที่ mcp.polylane.com/mcp และเว็บไซต์นี้อ่านได้โดยเครื่องที่ polylane.com/llms.txt