mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-22 04:42:56 +00:00
Compare commits
7 Commits
rustls
...
hack/compu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
32d4e4914a | ||
|
|
d4d577e7ff | ||
|
|
f552aa05fa | ||
|
|
779badb7c5 | ||
|
|
e6eb548491 | ||
|
|
16e9eb2832 | ||
|
|
042686183b |
@@ -714,6 +714,23 @@ RUN wget https://github.com/pksunkara/pgx_ulid/archive/refs/tags/v0.1.3.tar.gz -
|
|||||||
cargo pgrx install --release && \
|
cargo pgrx install --release && \
|
||||||
echo "trusted = true" >> /usr/local/pgsql/share/extension/ulid.control
|
echo "trusted = true" >> /usr/local/pgsql/share/extension/ulid.control
|
||||||
|
|
||||||
|
#########################################################################################
|
||||||
|
#
|
||||||
|
# Layer "pg-wait-sampling-pg-build"
|
||||||
|
# compile pg_wait_sampling extension
|
||||||
|
#
|
||||||
|
#########################################################################################
|
||||||
|
FROM build-deps AS pg-wait-sampling-pg-build
|
||||||
|
COPY --from=pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
||||||
|
|
||||||
|
ENV PATH "/usr/local/pgsql/bin/:$PATH"
|
||||||
|
RUN wget https://github.com/postgrespro/pg_wait_sampling/archive/refs/tags/v1.1.5.tar.gz -O pg_wait_sampling.tar.gz && \
|
||||||
|
echo 'a03da6a413f5652ce470a3635ed6ebba528c74cb26aa4cfced8aff8a8441f81ec6dd657ff62cd6ce96a4e6ce02cad9f2519ae9525367ece60497aa20faafde5c pg_wait_sampling.tar.gz' | sha512sum -c && \
|
||||||
|
mkdir pg_wait_sampling-src && cd pg_wait_sampling-src && tar xvzf ../pg_wait_sampling.tar.gz --strip-components=1 -C . && \
|
||||||
|
make USE_PGXS=1 -j $(getconf _NPROCESSORS_ONLN) && \
|
||||||
|
make USE_PGXS=1 -j $(getconf _NPROCESSORS_ONLN) install && \
|
||||||
|
echo 'trusted = true' >> /usr/local/pgsql/share/extension/pg_wait_sampling.control
|
||||||
|
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
#
|
#
|
||||||
# Layer "neon-pg-ext-build"
|
# Layer "neon-pg-ext-build"
|
||||||
@@ -750,6 +767,7 @@ COPY --from=rdkit-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
|||||||
COPY --from=pg-uuidv7-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
COPY --from=pg-uuidv7-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
||||||
COPY --from=pg-roaringbitmap-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
COPY --from=pg-roaringbitmap-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
||||||
COPY --from=pg-embedding-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
COPY --from=pg-embedding-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
||||||
|
COPY --from=pg-wait-sampling-pg-build /usr/local/pgsql/ /usr/local/pgsql/
|
||||||
COPY pgxn/ pgxn/
|
COPY pgxn/ pgxn/
|
||||||
|
|
||||||
RUN make -j $(getconf _NPROCESSORS_ONLN) \
|
RUN make -j $(getconf _NPROCESSORS_ONLN) \
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ use std::collections::HashMap;
|
|||||||
use std::env;
|
use std::env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::BufRead;
|
use std::io::BufRead;
|
||||||
|
use std::io::Write;
|
||||||
use std::os::unix::fs::PermissionsExt;
|
use std::os::unix::fs::PermissionsExt;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::process::{Command, Stdio};
|
use std::process::{Command, Stdio};
|
||||||
@@ -14,6 +15,7 @@ use chrono::{DateTime, Utc};
|
|||||||
use futures::future::join_all;
|
use futures::future::join_all;
|
||||||
use futures::stream::FuturesUnordered;
|
use futures::stream::FuturesUnordered;
|
||||||
use futures::StreamExt;
|
use futures::StreamExt;
|
||||||
|
use notify::event;
|
||||||
use postgres::{Client, NoTls};
|
use postgres::{Client, NoTls};
|
||||||
use tokio;
|
use tokio;
|
||||||
use tokio_postgres;
|
use tokio_postgres;
|
||||||
@@ -644,9 +646,30 @@ impl ComputeNode {
|
|||||||
} else {
|
} else {
|
||||||
vec![]
|
vec![]
|
||||||
})
|
})
|
||||||
|
.stderr(Stdio::piped())
|
||||||
.spawn()
|
.spawn()
|
||||||
.expect("cannot start postgres process");
|
.expect("cannot start postgres process");
|
||||||
|
|
||||||
|
let stderr = pg.stderr.take().unwrap();
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let reader = std::io::BufReader::new(stderr);
|
||||||
|
let mut last_lines = vec![];
|
||||||
|
for line in reader.lines() {
|
||||||
|
if let Ok(line) = line {
|
||||||
|
if line.starts_with("2023-") {
|
||||||
|
// print all lines from the previous postgres instance
|
||||||
|
let combined = format!("PG:{}\n", last_lines.join("\u{200B}"));
|
||||||
|
let res = std::io::stderr().lock().write_all(combined.as_bytes());
|
||||||
|
if let Err(e) = res {
|
||||||
|
error!("failed to write to stderr: {}", e);
|
||||||
|
}
|
||||||
|
last_lines.clear();
|
||||||
|
}
|
||||||
|
last_lines.push(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
wait_for_postgres(&mut pg, pgdata_path)?;
|
wait_for_postgres(&mut pg, pgdata_path)?;
|
||||||
|
|
||||||
Ok(pg)
|
Ok(pg)
|
||||||
|
|||||||
@@ -670,6 +670,12 @@ pub fn handle_extensions(spec: &ComputeSpec, client: &mut Client) -> Result<()>
|
|||||||
info!("creating system extensions with query: {}", query);
|
info!("creating system extensions with query: {}", query);
|
||||||
client.simple_query(query)?;
|
client.simple_query(query)?;
|
||||||
}
|
}
|
||||||
|
if libs.contains("pg_wait_sampling") {
|
||||||
|
// Create extension only if this compute really needs it
|
||||||
|
let query = "CREATE EXTENSION IF NOT EXISTS pg_wait_sampling";
|
||||||
|
info!("creating system extensions with query: {}", query);
|
||||||
|
client.simple_query(query)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ from fixtures.pageserver.http import PageserverHttpClient
|
|||||||
|
|
||||||
def check_tenant(env: NeonEnv, pageserver_http: PageserverHttpClient):
|
def check_tenant(env: NeonEnv, pageserver_http: PageserverHttpClient):
|
||||||
tenant_id, timeline_id = env.neon_cli.create_tenant()
|
tenant_id, timeline_id = env.neon_cli.create_tenant()
|
||||||
endpoint = env.endpoints.create_start("main", tenant_id=tenant_id)
|
endpoint = env.endpoints.create_start("main", tenant_id=tenant_id, config_lines=[
|
||||||
|
"log_statement=all",
|
||||||
|
],)
|
||||||
# we rely upon autocommit after each statement
|
# we rely upon autocommit after each statement
|
||||||
res_1 = endpoint.safe_psql_many(
|
res_1 = endpoint.safe_psql_many(
|
||||||
queries=[
|
queries=[
|
||||||
"CREATE TABLE t(key int primary key, value text)",
|
"CREATE TABLE \nt(key int primary key, value text)",
|
||||||
"INSERT INTO t SELECT generate_series(1,100000), 'payload'",
|
"INSERT INTO \n\nt SELECT generate_series(1,100000), 'payload'",
|
||||||
"SELECT sum(key) FROM t",
|
"SELECT sum(key) FROM t",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ commands:
|
|||||||
- name: cgconfigparser
|
- name: cgconfigparser
|
||||||
user: root
|
user: root
|
||||||
sysvInitAction: sysinit
|
sysvInitAction: sysinit
|
||||||
shell: 'cgconfigparser -l /etc/cgconfig.conf -s 1664'
|
shell: "cgconfigparser -l /etc/cgconfig.conf -s 1664"
|
||||||
- name: pgbouncer
|
- name: pgbouncer
|
||||||
user: nobody
|
user: nobody
|
||||||
sysvInitAction: respawn
|
sysvInitAction: respawn
|
||||||
shell: '/usr/local/bin/pgbouncer /etc/pgbouncer.ini'
|
shell: "/usr/local/bin/pgbouncer /etc/pgbouncer.ini"
|
||||||
- name: postgres-exporter
|
- name: postgres-exporter
|
||||||
user: nobody
|
user: nobody
|
||||||
sysvInitAction: respawn
|
sysvInitAction: respawn
|
||||||
shell: 'DATA_SOURCE_NAME="user=cloud_admin sslmode=disable dbname=postgres" /bin/postgres_exporter'
|
shell: 'DATA_SOURCE_NAME="user=cloud_admin sslmode=disable dbname=postgres" /bin/postgres_exporter --extend.query-path /etc/postgres_exporter_queries.yml'
|
||||||
shutdownHook: |
|
shutdownHook: |
|
||||||
su -p postgres --session-command '/usr/local/bin/pg_ctl stop -D /var/db/postgres/compute/pgdata -m fast --wait -t 10'
|
su -p postgres --session-command '/usr/local/bin/pg_ctl stop -D /var/db/postgres/compute/pgdata -m fast --wait -t 10'
|
||||||
files:
|
files:
|
||||||
@@ -46,6 +46,30 @@ files:
|
|||||||
}
|
}
|
||||||
memory {}
|
memory {}
|
||||||
}
|
}
|
||||||
|
- filename: postgres_exporter_queries.yml
|
||||||
|
content: |
|
||||||
|
pg_wait_sampling:
|
||||||
|
query: "select pid, event_type, event, w.queryid as queryid, query, count from pg_wait_sampling_profile w left join pg_stat_statements s on w.queryid = s.queryid;"
|
||||||
|
cache_seconds: 30
|
||||||
|
metrics:
|
||||||
|
- pid:
|
||||||
|
usage: "LABEL"
|
||||||
|
description: "backend pid"
|
||||||
|
- event_type:
|
||||||
|
usage: "LABEL"
|
||||||
|
description: "event type"
|
||||||
|
- event:
|
||||||
|
usage: "LABEL"
|
||||||
|
description: "event"
|
||||||
|
- queryid:
|
||||||
|
usage: "LABEL"
|
||||||
|
description: "queryid"
|
||||||
|
- query:
|
||||||
|
usage: "LABEL"
|
||||||
|
description: "query"
|
||||||
|
- count:
|
||||||
|
usage: "GAUGE"
|
||||||
|
description: "count"
|
||||||
build: |
|
build: |
|
||||||
# Build cgroup-tools
|
# Build cgroup-tools
|
||||||
#
|
#
|
||||||
@@ -114,10 +138,12 @@ merge: |
|
|||||||
|
|
||||||
COPY cgconfig.conf /etc/cgconfig.conf
|
COPY cgconfig.conf /etc/cgconfig.conf
|
||||||
COPY pgbouncer.ini /etc/pgbouncer.ini
|
COPY pgbouncer.ini /etc/pgbouncer.ini
|
||||||
|
COPY postgres_exporter_queries.yml /etc/postgres_exporter_queries.yml
|
||||||
RUN set -e \
|
RUN set -e \
|
||||||
&& chown postgres:postgres /etc/pgbouncer.ini \
|
&& chown postgres:postgres /etc/pgbouncer.ini \
|
||||||
&& chmod 0644 /etc/pgbouncer.ini \
|
&& chmod 0644 /etc/pgbouncer.ini \
|
||||||
&& chmod 0644 /etc/cgconfig.conf
|
&& chmod 0644 /etc/cgconfig.conf \
|
||||||
|
&& chmod 0644 /etc/postgres_exporter_queries.yml
|
||||||
|
|
||||||
COPY --from=libcgroup-builder /libcgroup-install/bin/* /usr/bin/
|
COPY --from=libcgroup-builder /libcgroup-install/bin/* /usr/bin/
|
||||||
COPY --from=libcgroup-builder /libcgroup-install/lib/* /usr/lib/
|
COPY --from=libcgroup-builder /libcgroup-install/lib/* /usr/lib/
|
||||||
|
|||||||
Reference in New Issue
Block a user