run_ffead.sh 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. #!/bin/sh
  2. rm -f /usr/local/lib/libffead-*
  3. rm -f /usr/local/lib/libt1.so*
  4. rm -f /usr/local/lib/libt2.so*
  5. rm -f /usr/local/lib/libt3.so*
  6. rm -f /usr/local/lib/libt4.so*
  7. rm -f /usr/local/lib/libt5.so*
  8. rm -f /usr/local/lib/libinter.so
  9. rm -f /usr/local/lib/libdinter.so
  10. export FFEAD_CPP_PATH=${IROOT}/$1
  11. ln -s ${FFEAD_CPP_PATH}/lib/libt1.so /usr/local/lib/libt1.so
  12. ln -s ${FFEAD_CPP_PATH}/lib/libt2.so /usr/local/lib/libt2.so
  13. ln -s ${FFEAD_CPP_PATH}/lib/libt3.so /usr/local/lib/libt3.so
  14. ln -s ${FFEAD_CPP_PATH}/lib/libt4.so /usr/local/lib/libt4.so
  15. ln -s ${FFEAD_CPP_PATH}/lib/libt5.so /usr/local/lib/libt5.so
  16. ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
  17. ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
  18. ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so
  19. ln -s ${FFEAD_CPP_PATH}/lib/libdinter.so /usr/local/lib/libdinter.so
  20. ldconfig
  21. if [ "$2" = "nginx" ]
  22. then
  23. if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
  24. then
  25. export PATH=${IROOT}/nginx-ffead-sql/sbin:${PATH}
  26. else
  27. export PATH=${IROOT}/nginx-ffead-mongo/sbin:${PATH}
  28. fi
  29. fi
  30. export LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/lib:$LD_LIBRARY_PATH
  31. export ODBCINI=${IROOT}/odbc.ini
  32. export ODBCSYSINI=${IROOT}
  33. export LD_PRELOAD=/usr/local/lib/libmimalloc.so
  34. #export LD_PRELOAD=$IROOT/snmalloc-0.5.3/build/libsnmallocshim.so
  35. cd $FFEAD_CPP_PATH
  36. #use below settings only for debugging
  37. #echo '/tmp/core.%h.%e.%t' > /proc/sys/kernel/core_pattern
  38. #ulimit -c unlimited
  39. service redis-server stop
  40. service apache2 stop
  41. service memcached stop
  42. if [ "$3" = "mongo" ]
  43. then
  44. WEB_DIR=$FFEAD_CPP_PATH/web/t1
  45. rm -rf web/t2 web/t3 web/t4 web/t5
  46. cp -f ${WEB_DIR}/config/sdormmongo.xml ${WEB_DIR}/config/sdorm.xml
  47. elif [ "$3" = "mongo-raw" ]
  48. then
  49. WEB_DIR=$FFEAD_CPP_PATH/web/t2
  50. rm -rf web/t1 web/t3 web/t4 web/t5
  51. elif [ "$3" = "mysql" ]
  52. then
  53. WEB_DIR=$FFEAD_CPP_PATH/web/t1
  54. rm -rf web/t2 web/t3 web/t4 web/t5
  55. cp -f ${WEB_DIR}/config/sdormmysql.xml ${WEB_DIR}/config/sdorm.xml
  56. elif [ "$3" = "postgresql" ]
  57. then
  58. WEB_DIR=$FFEAD_CPP_PATH/web/t1
  59. rm -rf web/t2 web/t3 web/t4 web/t5
  60. cp -f web/t1/config/sdormpostgresql.xml web/t1/config/sdorm.xml
  61. elif [ "$3" = "postgresql-raw" ]
  62. then
  63. WEB_DIR=$FFEAD_CPP_PATH/web/t3
  64. rm -rf web/t1 web/t2 web/t4 web/t5
  65. sed -i 's|<async>true</async>|<async>false</async>|g' ${WEB_DIR}/config/sdorm.xml
  66. elif [ "$3" = "postgresql-raw-async" ]
  67. then
  68. WEB_DIR=$FFEAD_CPP_PATH/web/t4
  69. rm -rf web/t1 web/t2 web/t3 web/t5
  70. sed -i 's|<async>false</async>|<async>true</async>|g' ${WEB_DIR}/config/sdorm.xml
  71. elif [ "$3" = "postgresql-raw-async-qw" ]
  72. then
  73. WEB_DIR=$FFEAD_CPP_PATH/web/t5
  74. rm -rf web/t1 web/t2 web/t3 web/t4
  75. sed -i 's|<async>false</async>|<async>true</async>|g' ${WEB_DIR}/config/sdorm.xml
  76. else
  77. WEB_DIR=$FFEAD_CPP_PATH/web/t1
  78. rm -rf web/t2 web/t3 web/t4 web/t5
  79. fi
  80. if [ "$5" = "batch" ]
  81. then
  82. sed -i 's|<batch>false</batch>|<batch>true</batch>|g' ${WEB_DIR}/config/sdorm.xml
  83. fi
  84. if [ "$3" != "postgresql-raw-async-qw" ]
  85. then
  86. if [ "$4" = "memory" ]
  87. then
  88. cp -f ${WEB_DIR}/config/cachememory.xml ${WEB_DIR}/config/cache.xml
  89. elif [ "$4" = "redis" ]
  90. then
  91. service redis-server start
  92. cp -f ${WEB_DIR}/config/cacheredis.xml ${WEB_DIR}/config/cache.xml
  93. elif [ "$4" = "memcached" ]
  94. then
  95. service memcached start
  96. cp -f ${WEB_DIR}/config/cachememcached.xml ${WEB_DIR}/config/cache.xml
  97. fi
  98. fi
  99. rm -f rtdcf/*.d rtdcf/*.o
  100. rm -f *.cntrl
  101. rm -f tmp/*.sess
  102. if [ ! -d tmp ]; then
  103. mkdir tmp
  104. fi
  105. chmod 700 ffead-cpp*
  106. chmod 700 resources/*.sh
  107. chmod 700 tests/*
  108. chmod 700 rtdcf/*
  109. if [ "$2" = "apache" ]
  110. then
  111. sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' ${WEB_DIR}/config/sdorm.xml
  112. sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' ${WEB_DIR}/config/cache.xml
  113. elif [ "$2" = "nginx" ]
  114. then
  115. sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' ${WEB_DIR}/config/sdorm.xml
  116. sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' ${WEB_DIR}/config/cache.xml
  117. fi
  118. if [ "$2" = "emb" ]
  119. then
  120. sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
  121. sed -i 's|REQUEST_HANDLER=RequestReaderHandler|REQUEST_HANDLER=RequestHandler2|g' $FFEAD_CPP_PATH/resources/server.prop
  122. if [ "$3" = "postgresql-raw-async-qw" ]
  123. then
  124. sed -i 's|QUEUED_WRITES=false|QUEUED_WRITES=true|g' $FFEAD_CPP_PATH/resources/server.prop
  125. fi
  126. for i in $(seq 0 $(($(nproc --all)-1))); do
  127. taskset -c $i ./ffead-cpp $FFEAD_CPP_PATH &
  128. done
  129. elif [ "$2" = "lithium" ]
  130. then
  131. ./ffead-cpp-lithium $FFEAD_CPP_PATH &
  132. elif [ "$2" = "cinatra" ]
  133. then
  134. ./ffead-cpp-cinatra $FFEAD_CPP_PATH &
  135. elif [ "$2" = "drogon" ]
  136. then
  137. ./ffead-cpp-drogon $FFEAD_CPP_PATH &
  138. elif [ "$2" = "apache" ]
  139. then
  140. if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
  141. then
  142. sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/apache2.conf
  143. sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ffead-site.conf
  144. fi
  145. apachectl -D FOREGROUND
  146. elif [ "$2" = "nginx" ]
  147. then
  148. mkdir -p ${IROOT}/nginxfc/logs
  149. if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
  150. then
  151. nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-sql/conf/nginx.conf
  152. else
  153. nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-mongo/conf/nginx.conf
  154. fi
  155. elif [ "$2" = "libreactor" ]
  156. then
  157. cd ${IROOT}
  158. ./libreactor-ffead-cpp $FFEAD_CPP_PATH 8080
  159. elif [ "$2" = "h2o" ]
  160. then
  161. cd ${IROOT}/lang-server-backends/c/h2o
  162. ./h2o.sh ${FFEAD_CPP_PATH} ${LD_LIBRARY_PATH} 8080
  163. elif [ "$2" = "crystal-http" ]
  164. then
  165. cd ${IROOT}
  166. for i in $(seq 0 $(($(nproc --all)-1))); do
  167. taskset -c $i ./crystal-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080 &
  168. done
  169. elif [ "$2" = "crystal-h2o" ]
  170. then
  171. cd ${IROOT}
  172. for i in $(seq 0 $(($(nproc --all)-1))); do
  173. taskset -c $i ./h2o-evloop-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080 &
  174. done
  175. elif [ "$2" = "julia-http" ]
  176. then
  177. for i in $(seq 0 $(($(nproc --all)-1))); do
  178. julia ${IROOT}/lang-server-backends/julia/http.jl/server.jl $FFEAD_CPP_PATH
  179. done
  180. elif [ "$2" = "swift-nio" ]
  181. then
  182. cd ${IROOT}
  183. ./app $FFEAD_CPP_PATH
  184. elif [ "$2" = "d-hunt" ]
  185. then
  186. cd ${IROOT}
  187. ./hunt-minihttp -s $FFEAD_CPP_PATH
  188. elif [ "$2" = "rust-actix" ]
  189. then
  190. cd ${IROOT}
  191. ./actix-ffead-cpp $FFEAD_CPP_PATH 8080
  192. elif [ "$2" = "rust-hyper" ]
  193. then
  194. cd ${IROOT}
  195. ./hyper-ffead-cpp $FFEAD_CPP_PATH 8080
  196. elif [ "$2" = "rust-thruster" ]
  197. then
  198. cd ${IROOT}
  199. ./thruster-ffead-cpp $FFEAD_CPP_PATH 8080
  200. elif [ "$2" = "rust-rocket" ]
  201. then
  202. cd ${IROOT}
  203. ./rocket-ffead-cpp $FFEAD_CPP_PATH 8080
  204. elif [ "$2" = "go-fasthttp" ]
  205. then
  206. cd ${IROOT}
  207. ./fasthttp-ffead-cpp --server_directory=$FFEAD_CPP_PATH -addr=8080
  208. elif [ "$2" = "go-gnet" ]
  209. then
  210. cd ${IROOT}
  211. ./gnet-ffead-cpp --server_directory=$FFEAD_CPP_PATH --port=8080
  212. elif [ "$2" = "v-vweb" ]
  213. then
  214. cd ${IROOT}
  215. for i in $(seq 0 $(($(nproc --all)-1))); do
  216. taskset -c $i ./vweb --server_dir=$FFEAD_CPP_PATH --server_port=8080 &
  217. done
  218. elif [ "$2" = "v-picov" ]
  219. then
  220. cd ${IROOT}
  221. sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${WEB_DIR}/config/application.xml
  222. sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' $FFEAD_CPP_PATH/resources/server.prop
  223. for i in $(seq 0 $(($(nproc --all)-1))); do
  224. taskset -c $i ./main --server_dir=$FFEAD_CPP_PATH --server_port=8080 &
  225. done
  226. elif [ "$2" = "java-firenio" ]
  227. then
  228. cd ${IROOT}
  229. java \
  230. -server \
  231. -XX:+UseNUMA \
  232. -XX:+UseParallelGC \
  233. -XX:+AggressiveOpts \
  234. -Dlite=false \
  235. -Dcore=1 \
  236. -Dframe=16 \
  237. -DreadBuf=512 \
  238. -Dpool=true \
  239. -Ddirect=true \
  240. -Dinline=true \
  241. -Dlevel=1 \
  242. -Dread=false \
  243. -Depoll=true \
  244. -Dnodelay=true \
  245. -Dcachedurl=false \
  246. -DunsafeBuf=true \
  247. -classpath firenio-ffead-cpp-0.1-jar-with-dependencies.jar com.firenio.ffeadcpp.FirenioFfeadCppServer $FFEAD_CPP_PATH 8080
  248. elif [ "$2" = "java-rapidoid" ]
  249. then
  250. cd ${IROOT}
  251. java -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \
  252. -classpath rapidoid-ffead-cpp-1.0-jar-with-dependencies.jar \
  253. com.rapidoid.ffeadcpp.Main $FFEAD_CPP_PATH 8080 profiles=production
  254. elif [ "$2" = "java-wizzardo-http" ]
  255. then
  256. cd ${IROOT}
  257. java -Xmx2G -Xms2G -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \
  258. -jar wizzardo-ffead-cpp-all-1.0.jar $FFEAD_CPP_PATH 8080 env=prod
  259. elif [ "$2" = "seastar" ]
  260. then
  261. cd ${IROOT}/lang-server-backends/c++/seastar
  262. ./ffead-cpp-seastar --port=8080 --address=0.0.0.0 --fcpdir=${FFEAD_CPP_PATH} -c$(nproc)
  263. fi
  264. wait