لینک کوتاه
پنجشنبه , 09 فروردین 1403
0 دیدگاه
با توجه به حذف تغییر ساعت در ابتدای فصل بهار و پاییز ، نیاز به آپدیت این تغییر در سمت سرور میباشد
برای اینکار دستورات زیر را انجام دهید .
cd /tmp
wget https://data.iana.org/time-zones/releases/tzdata2022b.tar.gz
tar -xzvf tzdata2022b.tar.gz
zic asia
rm -rf tzdata2022b.tar.gz
لینک کوتاه
پنجشنبه , 18 خرداد 1402
0 دیدگاه
برای نصب pgbouncer روی اوبونتو/دبیان دستور زیر را وارد کنید
apt install pgbouncer
روی سایر توزیع ها هم مشابه هست .
بعد از نصب pgbouncer باید اون رو کانفیگ کنید که به دیتابیس وصل بشه پس فایل pgbouncer.ini رو باز کنید .
nano /etc/pgbouncer/pgbouncer.ini
و تغییرات زیر رو داخلش اعمال کنید
[databases]
* = port=5432 host=127.0.0.1 user=postgres password=demodemo123456
logfile = /var/log/pgbouncer/pgbouncer.log
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
stats_users = postgres
pool_mode = transaction
بعد نیاز هست در فایل userlist.txt یوزر و پسورد مجاز برای اتصال به pgbouncer رو ست بکنید .
خب ما میخوایم یوزر postgres با پسورد demodemo123456 ست بکنیم با دستور زیر یک هش میسازیم
echo -n "md5"; echo -n "demodemo123456postgres" | md5sum | awk '{print $1}'
خروجی دستور میشه md5f50555910d331025231bb549b0a1eeb1
در فایل /etc/pgbouncer/userlist.txt بصورت زیر وارد میکنیم
"postgres" "md5f50555910d331025231bb549b0a1eeb1"
و سیو میکنیم ، حالا برای اجرای pgbouncer فقط کافیه دستور زیر رو اجرا کنیم .
cd /etc/pgbouncer
pgbouncer pgbouncer.ini -u postgres
حالا به جای پورت 5432 باید به پورت 6432 وصل بشیم که اینطوری به جای اتصال مستقیم به postgresql ، به pgbouncer وصل میشیم .
برای تفاوت این دو میتونیم یک بنچمارک بگیریم .
برای بنچ مارک از pgbench استفاده میکنیم و یک دستور ساده رو تست میکنیم .
یک فایل موقت میسازیم در مسیر
/tmp/select.sql
و دستور زیر رو داخلش قرار میدیم
select 'reza' || now();
حالا نوبت اجرا کردن bgbench هست
ابتدا دستور sudo -su postgres رو میزنیم و سپس دستور زیر رو برای آماده شدن bgbench
bgbench -i postgres
برای اینکه تفاوت استفاده و عدم استفاده از pgbouncer رو ببنیم یکبار مستقیم به postgresql وصل میشیم و یکبار به pgbouncer
دستورات تست به شکل زیر هست
pgbench -c 5 -t 100 -S postgres -C -f /tmp/select.sql -p 5432
pgbench -c 5 -t 100 -S postgres -C -f /tmp/select.sql -p 6432
ونتایج جالب زیر مشخص میشه :
در حالت postgresql
pgbench -c 5 -t 100 -S postgres -C -f /tmp/select.sql -p 5432
transaction type: multiple scripts
scaling factor: 1
query mode: simple
number of clients: 5
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 500/500
latency average = 82.477 ms
average connection time = 16.100 ms
tps = 60.623285 (including reconnection times)
SQL script 1:
- weight: 1 (targets 50.0% of total)
- 247 transactions (49.4% of total, tps = 29.947903)
- latency average = 0.797 ms
- latency stddev = 0.278 ms
SQL script 2: /tmp/select.sql
- weight: 1 (targets 50.0% of total)
- 253 transactions (50.6% of total, tps = 30.675382)
- latency average = 5.457 ms
- latency stddev = 86.628 ms
در حالت pgbouncer
pgbench -c 5 -t 100 -S postgres -C -f /tmp/select.sql -p 6432
Password:
pgbench (14.8 (Ubuntu 14.8-0ubuntu0.22.04.1))
starting vacuum...end.
transaction type: multiple scripts
scaling factor: 1
query mode: simple
number of clients: 5
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 500/500
latency average = 4.461 ms
average connection time = 0.860 ms
tps = 1120.724436 (including reconnection times)
SQL script 1:
- weight: 1 (targets 50.0% of total)
- 250 transactions (50.0% of total, tps = 560.362218)
- latency average = 1.060 ms
- latency stddev = 1.257 ms
SQL script 2: /tmp/select.sql
- weight: 1 (targets 50.0% of total)
- 250 transactions (50.0% of total, tps = 560.362218)
- latency average = 1.928 ms
- latency stddev = 8.009 ms
با تشکر ، رضا شیخله
سوالی بود در خدمتم
لینک کوتاه
پنجشنبه , 18 خرداد 1402
0 دیدگاه
برای نصب postgresql ابتدا در اوبونتو دستور
apt install postgresql
را وارد کنید بعد از اینکه نصب تمام شد دستور زیر را وارد کنید که وارد psql بشید
sudo su - postgres
سپس برای تعیین پسورد که در این مثال ما demodemo123456 رو ست میکنیم دستور زیر رو وارد کنید .
psql -c "alter user postgres with password 'demodemo123456'";
برای خروج از محیط psql کافیه دستور \exit
را وارد کنید .
حالا نوبت به کانفیگ pg_hba میرسه در مسیر زیر دنبال فایل pg_hba.conf بگردید
/etc/postgresql/14/main/
بعد فایل رو با nano باز کنید
nano /etc/postgresql/14/main/pg_hba.conf
و دستور زیر را پیدا کنید
# Database administrative login by Unix domain socket
local all postgres peer
اونو تبدیل کنید به
# Database administrative login by Unix domain socket
local all postgres md5
یکبار سرویس postgresql رو رستارت کنید .
service postgresql restart
دیتابیس postgresql با یوزر postgres و پسورد demodemo123456 روی پورت 5432 اجرا و دردسترس هست میتونید از adminer.org جهت مدیریت دیتابیس بصورت تحت وب استفاده بکنید .
اگر php و apache ندارید نصبش کنید
apt install php apache2 php-pdo php-pgsql php-common
وارد مسیر دیفالت آپاچی بشید
cd /var/www/html/
و adminer رو از سایت adminer.org بگیرید .
wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php -O adminer.php
حالا کافیه آی پی سرور رو بزنید
http://127.0.0.1/adminer.php
سوالی داشتید در خدمتم .
لینک کوتاه
چهارشنبه , 26 مرداد 1401
0 دیدگاه
همانطور که باید بدونید استرس تست بخش مهمی از هر پروژه هست که باید حتما انجام بشه و یکی از رایجترین ابزارهای apache benchmark هست اما ممکن هست این ابزار در دسترس نباشد یا بخواهید با ابزارهای دیگر هم این تست رو انجام بدید . دو برنامه دیگر به اسم siege و weighttp عملکرد مشابهی دارند و میتوانید از آنها استفاده کنید .
در این پست دستور معادل در دو برنامه دیگه به اسم siege و weighttp رو معرفی میکنیم .
دستور مثال :
command for Ab :
ab -n 1000 -c 100 https://reza.biz/
command for siege :
siege -q -b -c 100 -r 1000 https://reza.biz/
command for weighttp:
weighttp -n 1000 -c 100 -k https://reza.biz/
لینک کوتاه
یکشنبه , 06 مرداد 1398
0 دیدگاه
متاسفانه GitHub مشغول بستن دسترسی کاربرهای ایرانی هست ، لذا کلیه افرادی که سورس هاشون روی GitHub هست توصیه میکنم سریعا به سرویس های دیگه منتقل بکنند .
متاسفانه ممکنه اوضاع روی سرویس های مشابه مثل GitLab هم همین بشه در آینده ، پس یکی از راه حل ها نصب سورس کنترل اختصاصی روی سرور هست .
آموزش نصب GitLab روی سرور
GitLab این امکان رو داره که روی سرور شخصی نصب بشه . اما شایدم بد نباشه یه نگاهی به GitPrep هم بندازید .
GitPrep یک سورس کنترل هست که شبیه به گیت هاب پیاده سازی شده و میتوانید بعنوان سورس کنترل ازش استفاده بکنید و روی سرور شخصی نصب نمایید.
آموزش نصب GitPrep روی سرور
دمو GitPrep
لینک کوتاه
چهارشنبه , 13 مرداد 1395
7 دیدگاه
سلام
قطعا پیش آمده براتون که در دیتابیس رکوردهای تکراری براساس یک فیلد رخ بده
مثلا ، کاربری با نام کاربری یکسان منتها بصورت حروف بزرگ و کوچیک ثبت نام کرده باشه Reza , reza rEzA
یا حتی مثلا شخصی به اسم رضا اقدام به ارسال چندین نظر کرده باشه
یا اینکه یکی از مطالب اخبارتون دو بار ثبت شده باشه
علی ای حال ، قطعا این مساله رخ میدهد
و اما ما میخوایم ببینیم با اینها چکار کنیم
ادامه مطلب ...
لینک کوتاه
شنبه , 09 آبان 1394
3 دیدگاه
با سلام
بعد از مدت طولانی باز هم برگشتم
شاید یک زمانی در یک پروژه ای خواستید یک اسکرین شات از یک صفحه سایت بگیرید
خیله خب ، ساده است اول میرید به اون سایت ، بعد روی کیبورد دکمه F11 رو میزنید تا صفحه FullScreen بشه و سپس دکمه PrintScreen رو میزنید تا یک تصویر از صفحه تون بگیره و سپس با استفاده از یک برنامه ادیتور تصویر مثل فوتوشاپ یا gimp اونو paste میکنید !
آههههه ، چه سخت شد :)
انگار یادم رفته من یه برنامه نویسم !
خیله خب هر چی که گفتم رو دور بریزید ، امروز میخوام یه کار دیگه بکنیم ، شاید روزی روزگاری هزار تا لینک دادن بهتون و گفتن ازشون عکس بگیر ، یا پرینت بگیر یا شایدم لازم شد توی سایتتون اسکرین شات سایتهای کاربراتونو نشون بدید یا هر چی
خب بریم ادامه مطلب
ادامه مطلب ...
لینک کوتاه
سه شنبه , 23 دی 1393
5 دیدگاه
به لطف سایت وبشمار(webshomar.com) لازم شد بنچ مارکی روی رکوردهای نسبتا بالا(دومیلیون رکورد) روی دیتابیس محبوب mysql و postgresql انجام بدهم
مشخصات
mysql 5.5
postgresql 9.1
debian 7 os
ram 4gig
cpu Intel Core i5-2430M CPU @ 2.40GHz
این بنچ مارک روی سیستم شخصی خودم انجام شد و ساختار دیتابیس های هر دو مشابه بود و داده ها کاملا شبیه هم بودند
در تیبل از فیلد های int , char , varchar , smallint استفاده شده بود
مختصر نتایج این بنچ مارک به شرح زیر خدممتان ارائه میگردد
در دستورات select عادی با چندین condition دیتابیس mysql با اختلاف جزئی در حد یک دهم و یک صدم سریعتر از pg بود
اما نیاز سایت وبشمار ایجاب میکرد کوئریهای سنگین محاسباتی روی رکوردها انجام گیرد
دستوراتی شمارشی مثل select count(*) با چندیدن condition با برتری قابل ملاحضه ای با pgsql بود در تستی که انجام شد pgsql در 3.4 ثانیه و mysql در 6.4 ثانیه کوئری را به انجام رساند
در کوئری هایی که شامل دستور count و group by بود برتری با pgsql بود نتیجه کوئری در pgsql در 3.8 ثانیه و در mysql با 7.9 ثانیه به انجام رسید
در کوئری هایی که شامل دستور count(distinct field)بود برتری با mysql بود نتیجه یک کوئری در pgsql با 9.8 ثانیه و در mysql با 5.1 ثانیه به انجام رسید
اما در کوئری هایی که شامل distinct بدون استفاده از count بود برتری با pgsql بود با 2.6 ثانیه در حالیکه mysql در 4.6 ثانیه کوئری را به انجام رساند
در نهایت پیشنهاد میکنم بررسی کنید اگر قرار هست وبسایت شما داده های محاسباتی را ذخیره کند و لازم باشد محاسباتی روی داده ها انجام گیرد مثلا تعداد رکورد ها در سیستم هایی چون آمارگیر و انجمن و شبکه اجتماعی و امثالهم پیاده سازی کنید از postgresql استفاده کنید و اگر هم قرار هست سیستم های خبری و محتوایی پیاده سازی کنید از mysql استفاده کنید
اگر هم احساس میکنید رکوردهای شما هیچ وقت به میلیون رکورد نمیرسد از mysql استفاده کنید که سریعتر هست .
دقت کنید به طور مثال اگر سایت شما در هر دقیقه یک رکورد جدید به دیتابیس اضافه کند , بعد از دو سال به یک میلیون رکورد میرسد !!
پس حتما چشم انداز فعالیت سایتی که پیاده میکنید را بررسی کنید .
با تشکر رضا شیخله
لینک کوتاه
شنبه , 01 آذر 1393
5 دیدگاه
کارهایی که بعد از نصب nginx باید انجام بدید .
1. عدم نمایش ورژن nginx در هدر ارسالی
2. فعال کردن gzip
gzip on; gzip_types text/plain application/xml text/css application/x-javascript application/javascript; gzip_vary on;
3. استفاده از دستور کش مرورگر (داخل هدر برای فایلهای ایستا)
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; log_not_found off; }
کلیه دستورات فوق باید در فایل کافیگ nginx در داخل بلاک server قرار بگیرند.
بعد از انجام تغییرات وبسرور را رستارت کنید .