Skip to content
This repository was archived by the owner on Aug 16, 2021. It is now read-only.

Commit 5bb2216

Browse files
dmiusDmitry
authored andcommitted
Use high speed drives + some improvements
1 parent d9779dd commit 5bb2216

File tree

1 file changed

+39
-36
lines changed

1 file changed

+39
-36
lines changed

nancy_run.sh

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,6 @@ function checkPath() {
281281
if [[ $path =~ "file:///" ]]
282282
then
283283
path=${path/file:\/\//}
284-
echo "CHECK $path"
285284
if [ -f $path ]
286285
then
287286
eval "$1=\"$path\"" # update original variable
@@ -662,14 +661,14 @@ elif [[ "$RUN_ON" = "aws" ]]; then
662661
>&2 echo "Failed: Docker $DOCKER_MACHINE is NOT running."
663662
exit 1;
664663
fi
665-
666664
echo "Docker $DOCKER_MACHINE is running."
667665

666+
echo "Attempt use high speed disk"
667+
docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"mkdir /home/storage\""
668668
if [ ${AWS_EC2_TYPE:0:2} == 'i3' ]
669669
then
670670
# Init i3 storage, just mount existing volume
671671
echo "Attach i3 nvme volume"
672-
docker-machine ssh $DOCKER_MACHINE df -h
673672
docker-machine ssh $DOCKER_MACHINE sudo add-apt-repository -y ppa:sbates
674673
docker-machine ssh $DOCKER_MACHINE sudo apt-get update || :
675674
docker-machine ssh $DOCKER_MACHINE sudo apt-get install -y nvme-cli
@@ -683,23 +682,18 @@ elif [[ "$RUN_ON" = "aws" ]]; then
683682

684683
docker-machine ssh $DOCKER_MACHINE sudo sfdisk /dev/nvme0n1 < /tmp/nvme.part
685684
docker-machine ssh $DOCKER_MACHINE sudo mkfs -t ext4 /dev/nvme0n1p1
686-
docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"mkdir /home/storage\""
687685
docker-machine ssh $DOCKER_MACHINE sudo mount /dev/nvme0n1p1 /home/storage
688-
# docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"echo 'Check mount storage TEST' > /home/storage/nvme0n1p1-test.txt\""
689-
docker-machine ssh $DOCKER_MACHINE df -h
690686
else
691687
# Create new volume and attach them for non i3 instances if need
692688
if [ ! -z ${EBS_SIZE+x} ]; then
693689
echo "Create and attach EBS volume"
694690
[ $DEBUG -eq 1 ] && echo "Create volume with size: $EBS_SIZE Gb"
695-
VOLUME_ID=$(aws ec2 create-volume --size 10 --region us-east-1 --availability-zone us-east-1a --volume-type gp2 | jq -r .VolumeId)
691+
VOLUME_ID=$(aws ec2 create-volume --size $EBS_SIZE --region us-east-1 --availability-zone us-east-1a --volume-type gp2 | jq -r .VolumeId)
696692
INSTANCE_ID=$(docker-machine ssh $DOCKER_MACHINE curl -s http://169.254.169.254/latest/meta-data/instance-id)
697693
sleep 10 # wait to volume will ready
698694
attachResult=$(aws ec2 attach-volume --device /dev/xvdf --volume-id $VOLUME_ID --instance-id $INSTANCE_ID --region us-east-1)
699695
docker-machine ssh $DOCKER_MACHINE sudo mkfs.ext4 /dev/xvdf
700-
docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"mkdir /home/storage\""
701696
docker-machine ssh $DOCKER_MACHINE sudo mount /dev/xvdf /home/storage
702-
# docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"echo 'Check mount storage TEST' > /home/storage/xvdf-test.txt\""
703697
fi
704698
fi
705699

@@ -720,8 +714,20 @@ alias docker_exec='docker $dockerConfig exec -i ${containerHash} '
720714

721715
MACHINE_HOME="/machine_home/nancy_${containerHash}"
722716
docker_exec sh -c "mkdir $MACHINE_HOME && chmod a+w $MACHINE_HOME"
723-
724-
#docker_exec bash -c "ls -al /storage/"
717+
docker_exec bash -c "ln -s /storage/ $MACHINE_HOME/storage"
718+
MACHINE_HOME="/machine_home/nancy_${containerHash}/storage"
719+
docker_exec sh -c "chmod a+w $MACHINE_HOME"
720+
docker_exec sh -c "chmod a+w /storage"
721+
722+
echo "Move posgresql to high speed disk"
723+
docker_exec bash -c "sudo /etc/init.d/postgresql stop"
724+
sleep 2 # wait for postgres stopped
725+
docker_exec bash -c "sudo mkdir /storage/postgresql"
726+
docker_exec bash -c "sudo mv /var/lib/postgresql/* /storage/postgresql"
727+
docker_exec bash -c "rm -R /var/lib/postgresql"
728+
docker_exec bash -c "ln -s /storage/postgresql /var/lib/postgresql"
729+
docker_exec bash -c "sudo /etc/init.d/postgresql start"
730+
sleep 2 # wait for postgres started
725731

726732
function copyFile() {
727733
if [ "$1" != '' ]; then
@@ -733,7 +739,7 @@ function copyFile() {
733739
# TODO: option – hard links OR regular `cp`
734740
docker cp ${1/file:\/\//} $containerHash:$MACHINE_HOME/
735741
elif [ "$RUN_ON" = "aws" ]; then
736-
docker-machine scp $1 $DOCKER_MACHINE:/home/ubuntu/nancy_${containerHash}
742+
docker-machine scp $1 $DOCKER_MACHINE:/home/storage
737743
else
738744
>&2 echo "ASSERT: must not reach this point"
739745
exit 1
@@ -756,24 +762,21 @@ function copyFile() {
756762
# Dump
757763
sleep 2 # wait for postgres up&running
758764
DB_DUMP_FILENAME=$(basename $DB_DUMP_PATH)
759-
docker_exec bash -c "bzcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql --set ON_ERROR_STOP=on -U postgres test"
765+
echo "Restore database dump"
766+
docker_exec bash -c "bzcat $MACHINE_HOME/$DB_DUMP_FILENAME | psql -E --set ON_ERROR_STOP=on -U postgres test > /dev/null"
760767
# After init database sql code apply
761768
echo "Apply sql code after db init"
762769
if ([ ! -z ${AFTER_DB_INIT_CODE+x} ] && [ "$AFTER_DB_INIT_CODE" != "" ])
763770
then
764771
AFTER_DB_INIT_CODE_FILENAME=$(basename $AFTER_DB_INIT_CODE)
765-
if [[ $AFTER_DB_INIT_CODE =~ "s3://" ]]; then
766-
docker_exec s3cmd sync $AFTER_DB_INIT_CODE $MACHINE_HOME/
767-
else
768-
docker-machine scp $AFTER_DB_INIT_CODE $DOCKER_MACHINE:/home/ubuntu/nancy_$containerHash
769-
fi
770-
docker_exec bash -c "psql -U postgres test -E -f $MACHINE_HOME/$AFTER_DB_INIT_CODE_FILENAME"
772+
copyFile $AFTER_DB_INIT_CODE
773+
docker_exec bash -c "psql -U postgres test -b -f $MACHINE_HOME/$AFTER_DB_INIT_CODE_FILENAME"
771774
fi
772775
# Apply DDL code
773776
echo "Apply DDL SQL code"
774777
if ([ ! -z ${TARGET_DDL_DO+x} ] && [ "$TARGET_DDL_DO" != "" ]); then
775778
TARGET_DDL_DO_FILENAME=$(basename $TARGET_DDL_DO)
776-
docker_exec bash -c "psql -U postgres test -E -f $MACHINE_HOME/$TARGET_DDL_DO_FILENAME"
779+
docker_exec bash -c "psql -U postgres test -b -f $MACHINE_HOME/$TARGET_DDL_DO_FILENAME"
777780
fi
778781
# Apply initial postgres configuration
779782
echo "Apply initial postgres configuration"
@@ -818,26 +821,26 @@ docker_exec bash -c "/root/pgbadger/pgbadger \
818821
--prefix '%t [%p]: [%l-1] db=%d,user=%u (%a,%h)' /var/log/postgresql/* -f stderr \
819822
-o $MACHINE_HOME/$ARTIFACTS_FILENAME.json"
820823

821-
echo "Save JSON log..."
824+
logpath=$( \
825+
docker_exec bash -c "psql -XtU postgres \
826+
-c \"select string_agg(setting, '/' order by name) from pg_settings where name in ('log_directory', 'log_filename');\" \
827+
| grep / | sed -e 's/^[ \t]*//'"
828+
)
829+
docker_exec bash -c "gzip -c $logpath > $MACHINE_HOME/$ARTIFACTS_FILENAME.log.gz"
830+
echo "Save artifcats..."
822831
if [[ $ARTIFACTS_DESTINATION =~ "s3://" ]]; then
823-
docker_exec s3cmd put /$MACHINE_HOME/$ARTIFACTS_FILENAME.json \
824-
$ARTIFACTS_DESTINATION/
832+
docker_exec s3cmd put /$MACHINE_HOME/$ARTIFACTS_FILENAME.json $ARTIFACTS_DESTINATION/
833+
docker_exec s3cmd put /$MACHINE_HOME/$ARTIFACTS_FILENAME.log.gz $ARTIFACTS_DESTINATION/
825834
else
826-
logpath=$( \
827-
docker_exec bash -c "psql -XtU postgres \
828-
-c \"select string_agg(setting, '/' order by name) from pg_settings where name in ('log_directory', 'log_filename');\" \
829-
| grep / | sed -e 's/^[ \t]*//'"
830-
)
831-
docker_exec bash -c "gzip -c $logpath > $MACHINE_HOME/$ARTIFACTS_FILENAME.log.gz"
832835
if [ "$RUN_ON" = "localhost" ]; then
833836
docker cp $containerHash:$MACHINE_HOME/$ARTIFACTS_FILENAME.json $ARTIFACTS_DESTINATION/
834837
docker cp $containerHash:$MACHINE_HOME/$ARTIFACTS_FILENAME.log.gz $ARTIFACTS_DESTINATION/
835838
# TODO option: ln / cp
836839
#cp "$TMP_PATH/nancy_$containerHash/"$ARTIFACTS_FILENAME.json $ARTIFACTS_DESTINATION/
837840
#cp "$TMP_PATH/nancy_$containerHash/"$ARTIFACTS_FILENAME.log.gz $ARTIFACTS_DESTINATION/
838841
elif [ "$RUN_ON" = "aws" ]; then
839-
docker-machine scp $DOCKER_MACHINE:/home/ubuntu/nancy_$containerHash/$ARTIFACTS_FILENAME.json $ARTIFACTS_DESTINATION/
840-
docker-machine scp $DOCKER_MACHINE:/home/ubuntu/nancy_$containerHash/$ARTIFACTS_FILENAME.log.gz $ARTIFACTS_DESTINATION/
842+
docker-machine scp $DOCKER_MACHINE:/home/storage/$ARTIFACTS_FILENAME.json $ARTIFACTS_DESTINATION/
843+
docker-machine scp $DOCKER_MACHINE:/home/storage/$ARTIFACTS_FILENAME.log.gz $ARTIFACTS_DESTINATION/
841844
else
842845
>&2 echo "ASSERT: must not reach this point"
843846
exit 1
@@ -847,18 +850,18 @@ fi
847850
echo "Apply DDL undo SQL code"
848851
if ([ ! -z ${TARGET_DDL_UNDO+x} ] && [ "$TARGET_DDL_UNDO" != "" ]); then
849852
TARGET_DDL_UNDO_FILENAME=$(basename $TARGET_DDL_UNDO)
850-
docker_exec bash -c "psql -U postgres test -E -f $MACHINE_HOME/$TARGET_DDL_UNDO_FILENAME"
853+
docker_exec bash -c "psql -U postgres test -b -f $MACHINE_HOME/$TARGET_DDL_UNDO_FILENAME"
851854
fi
852855

853856
echo -e "Run done!"
854857
echo -e "Report: $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.json"
855858
echo -e "Query log: $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.log.gz"
856859
echo -e "-------------------------------------------"
857860
echo -e "Summary:"
858-
echo -e " Queries duration:\t\t" $(cat $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.json | jq '.overall_stat.queries_duration') " ms"
859-
echo -e " Queries count:\t\t" $(cat $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.json | jq '.overall_stat.queries_number')
860-
echo -e " Normalized queries count:\t" $(cat $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.json | jq '.normalyzed_info| length')
861-
echo -e " Errors count:\t\t\t" $(cat $ARTIFACTS_DESTINATION/$ARTIFACTS_FILENAME.json | jq '.overall_stat.errors_number')
861+
echo -e " Queries duration:\t\t" $(docker_exec cat /$MACHINE_HOME/$ARTIFACTS_FILENAME.json | jq '.overall_stat.queries_duration') " ms"
862+
echo -e " Queries count:\t\t" $( docker_exec cat /$MACHINE_HOME/$ARTIFACTS_FILENAME.json | jq '.overall_stat.queries_number')
863+
echo -e " Normalized queries count:\t" $(docker_exec cat /$MACHINE_HOME/$ARTIFACTS_FILENAME.json | jq '.normalyzed_info| length')
864+
echo -e " Errors count:\t\t\t" $(docker_exec cat /$MACHINE_HOME/$ARTIFACTS_FILENAME.json | jq '.overall_stat.errors_number')
862865
echo -e "-------------------------------------------"
863866

864867
sleep $DEBUG_TIMEOUT

0 commit comments

Comments
 (0)