You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# :ssl.start()# sni_host = "db.ybkqkhkptkgmnlqjwtta.supabase.co"pass=System.fetch_env!("LB_SUPAVISOR_DEMO_PASS")project="ybkqkhkptkgmnlqjwtta"pooler_hostname="aws-0-us-west-1.pooler.supabase.com"# Supavisor Transaction Modesupa_opts=[hostname: pooler_hostname,port: 6543,# Include your project ref in the usernameusername: "postgres.#{project}",password: pass,database: "postgres"# ssl: true,# ssl_opts: [# verify: :verify_none,# server_name_indication: to_charlist(sni_host)# ]# socket_options: [:inet6]]# PgBouncerpgbouncer_opts=[hostname: "db.#{project}.supabase.co",port: 6543,# Include your project ref in the usernameusername: "postgres",password: pass,database: "postgres"# ssl: true,# ssl_opts: [# verify: :verify_none,# server_name_indication: to_charlist(sni_host)# ]# socket_options: [:inet6]]# Directdirect_opts=[hostname: "db.#{project}.supabase.co",port: 5432,# Include your project ref in the usernameusername: "postgres",password: pass,database: "postgres"# ssl: true,# ssl_opts: [# verify: :verify_none,# server_name_indication: to_charlist(sni_host)# ]# socket_options: [:inet6]]# Supavisor Session Modesession_opts=[hostname: pooler_hostname,port: 5432,# Include your project ref in the usernameusername: "postgres.ybkqkhkptkgmnlqjwtta",password: pass,database: "postgres"# ssl: true,# ssl_opts: [# verify: :verify_none,# server_name_indication: to_charlist(sni_host)# ]# socket_options: [:inet6]]connections=200
opts=supa_optspool_times=for_c<-1..connectionsdo:timer.tc(DynamicSupervisor,:start_child,[SvDemo.DynamicSupervisor,{Postgrex,opts}])endpool=Enum.map(pool_times,fn{_latency,response}->responseend)times=Enum.map(pool_times,fn{latency,_response}->latencyend)times|>Enum.sum()|>Kernel./(connections)|>Kernel./(1_000)|>Float.floor(2)|>Float.to_string()|>Kernel.<>(" ms avg per new connection")
{:ok,conn}=Enum.random(pool)Postgrex.query(conn,"select count(*) from pg_stat_activity where application_name ilike '%Supavisor%'",[])
Try a random connection
Postgrex.query(conn,"select 1 as one",[])
Create a test table
query="""CREATE TABLE if not exists diary_entries ( id SERIAL PRIMARY KEY, body TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, user_id INTEGER, tag TEXT)"""Postgrex.query(conn,query,[])
Do queries
defmoduleQuerydodefdo_query(conn)doinsert_query=""" INSERT INTO diary_entries (body, tag, user_id) values ('entry one', 'school', $1); """:timer.tc(Postgrex,:query,[conn,insert_query,[Enum.random(1..10)]])enddefprocess_response(responses)doconnections=Enum.count(responses)responses|>Enum.map(fn{time,_response}->timeend)|>Enum.sum()|>Kernel./(connections)|>Kernel./(1_000)|>Float.floor(2)|>Float.to_string()|>Kernel.<>(" ms avg per query")endendresponses=for{:ok,pid}<-pooldotask=fn->for_i<-1..10doQuery.do_query(pid)endendTask.async(task)end|>List.flatten()|>Task.await_many(300_000)|>List.flatten()IO.puts("#{Enum.count(responses)} requests")Query.process_response(responses)