diff --git a/locust/kubernetes-config/locust-master-deployment.yaml b/locust/kubernetes-config/locust-master-deployment.yaml new file mode 100644 index 0000000..ccce1a3 --- /dev/null +++ b/locust/kubernetes-config/locust-master-deployment.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: locust-master + labels: + name: locust-master +spec: + replicas: 1 + selector: + matchLabels: + app: locust-master + template: + metadata: + labels: + app: locust-master + spec: + containers: + - name: locust-master + image: rahulbhati/fission-locust:4 + ports: + - name: loc-master-web + containerPort: 8089 + protocol: TCP + - name: loc-master-p1 + containerPort: 5557 + protocol: TCP + - name: loc-master-p2 + containerPort: 5558 + protocol: TCP + env: + - name: LOCUST_MODE + value: master + - name: TARGET_HOST + value: http://router.fission/ + - name: NET_TIMEOUT + value: "3600" + - name: CON_TIMEOUT + value: "3600" + - name: TASK_1 + value: hello-1-15 + - name: TASK_2 + value: hello-2-45 + - name: TASK_3 + value: hello-3-75 + - name: TASK_4 + value: hello-4-90 + - name: TASK_5 + value: hello-5-120 \ No newline at end of file diff --git a/locust/kubernetes-config/locust-master-service.yaml b/locust/kubernetes-config/locust-master-service.yaml new file mode 100644 index 0000000..d2392df --- /dev/null +++ b/locust/kubernetes-config/locust-master-service.yaml @@ -0,0 +1,23 @@ +kind: Service +apiVersion: v1 +metadata: + name: locust-master + labels: + app: locust-master +spec: + ports: + - port: 8089 + targetPort: loc-master-web + protocol: TCP + name: loc-master-web + - port: 5557 + targetPort: loc-master-p1 + protocol: TCP + name: loc-master-p1 + - port: 5558 + targetPort: loc-master-p2 + protocol: TCP + name: loc-master-p2 + selector: + app: locust-master + type: LoadBalancer diff --git a/locust/kubernetes-config/locust-worker-deployment.yaml b/locust/kubernetes-config/locust-worker-deployment.yaml new file mode 100644 index 0000000..fe82ec5 --- /dev/null +++ b/locust/kubernetes-config/locust-worker-deployment.yaml @@ -0,0 +1,40 @@ +apiVersion: apps/v1 +kind: "Deployment" +metadata: + name: locust-worker + labels: + name: locust-worker +spec: + replicas: 10 + selector: + matchLabels: + app: locust-worker + template: + metadata: + labels: + app: locust-worker + spec: + containers: + - name: locust-worker + image: rahulbhati/fission-locust:4 + env: + - name: LOCUST_MODE + value: worker + - name: LOCUST_MASTER + value: locust-master + - name: TARGET_HOST + value: http://router.fission/ + - name: NET_TIMEOUT + value: "3600" + - name: CON_TIMEOUT + value: "3600" + - name: TASK_1 + value: hello-1-15 + - name: TASK_2 + value: hello-2-45 + - name: TASK_3 + value: hello-3-75 + - name: TASK_4 + value: hello-4-90 + - name: TASK_5 + value: hello-5-120 \ No newline at end of file diff --git a/locust/tasks/Dockerfile b/locust/tasks/Dockerfile new file mode 100644 index 0000000..5c1875b --- /dev/null +++ b/locust/tasks/Dockerfile @@ -0,0 +1,16 @@ +# Start with a base Python 3.7.2 image +FROM python:3.7.2 + +# Add the external tasks directory into /tasks +ADD code /code + +RUN pip install -r /code/requirements.txt + +# Expose the required Locust ports +EXPOSE 5557 5558 8089 + +# Set script to be executable +RUN chmod 755 /code/run.sh + +# Start Locust using LOCUS_OPTS environment variable +ENTRYPOINT ["/code/run.sh"] diff --git a/locust/tasks/code/requirements.txt b/locust/tasks/code/requirements.txt new file mode 100755 index 0000000..36b02db --- /dev/null +++ b/locust/tasks/code/requirements.txt @@ -0,0 +1,23 @@ +certifi==2020.6.20 +chardet==3.0.4 +click==7.1.2 +ConfigArgParse==1.2.3 +Flask==1.1.2 +Flask-BasicAuth==0.2.0 +gevent==20.9.0 +geventhttpclient==1.4.4 +greenlet==0.4.17 +idna==2.10 +itsdangerous==1.1.0 +Jinja2==2.11.2 +locust==1.2.3 +MarkupSafe==1.1.1 +msgpack==1.0.0 +psutil==5.7.2 +pyzmq==19.0.2 +requests==2.24.0 +six==1.15.0 +urllib3==1.25.10 +Werkzeug==1.0.1 +zope.event==4.5.0 +zope.interface==5.1.2 \ No newline at end of file diff --git a/locust/tasks/code/run.sh b/locust/tasks/code/run.sh new file mode 100755 index 0000000..dc936db --- /dev/null +++ b/locust/tasks/code/run.sh @@ -0,0 +1,12 @@ +#!/bin/bash +LOCUST="/usr/local/bin/locust" +LOCUS_OPTS="-f /code/tasks.py --host=$TARGET_HOST" +LOCUST_MODE=${LOCUST_MODE:-standalone} + +if [[ "$LOCUST_MODE" = "master" ]]; then + LOCUS_OPTS="$LOCUS_OPTS --master" +elif [[ "$LOCUST_MODE" = "worker" ]]; then + LOCUS_OPTS="$LOCUS_OPTS --worker --master-host=$LOCUST_MASTER" +fi + +$LOCUST $LOCUS_OPTS \ No newline at end of file diff --git a/locust/tasks/code/tasks.py b/locust/tasks/code/tasks.py new file mode 100644 index 0000000..5bc4911 --- /dev/null +++ b/locust/tasks/code/tasks.py @@ -0,0 +1,35 @@ +from datetime import datetime +import os +from locust import HttpUser, TaskSet, task, between +from locust.contrib.fasthttp import FastHttpUser + + +class FissionUser(FastHttpUser): + network_timeout = float(os.environ['NET_TIMEOUT']) + connection_timeout = float(os.environ['CON_TIMEOUT']) + wait_time = between(1, 2) + + @task(33) + def task1(self): + self.client.get( + '/fission-function/' + os.environ['TASK_1']) + + @task(19) + def task2(self): + self.client.get( + '/fission-function/' + os.environ['TASK_2']) + + @task(19) + def task3(self): + self.client.get( + '/fission-function/' + os.environ['TASK_3']) + + @task(13) + def task4(self): + self.client.get( + '/fission-function/' + os.environ['TASK_4']) + + @task(13) + def task5(self): + self.client.get( + '/fission-function/' + os.environ['TASK_5']) \ No newline at end of file diff --git a/samples/gobuster-example/binary-env/Dockerfile b/samples/gobuster-example/binary-env/Dockerfile deleted file mode 100644 index 7451799..0000000 --- a/samples/gobuster-example/binary-env/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM golang:onbuild - -WORKDIR /go -COPY *.go /go/ - -RUN GOOS=linux go build -o server . - -FROM golang:buster - -WORKDIR /app - -#RUN apk update -#RUN apk add coreutils binutils findutils grep - -COPY --from=0 /go/server /app/server - -EXPOSE 8888 -ENTRYPOINT ["./server"] diff --git a/samples/gobuster-example/binary-env/env.go b/samples/gobuster-example/binary-env/env.go deleted file mode 100644 index 2e66c2c..0000000 --- a/samples/gobuster-example/binary-env/env.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "fmt" - "strings" -) - -// Utility functions for working with environment variables -type Env struct { - Vars []*EnvVar -} - -type EnvVar struct { - Key string - Val string -} - -func FromString(rawEnvVar string) *EnvVar { - parts := strings.SplitN(rawEnvVar, "=", 2) - return &EnvVar{parts[0], parts[1]} -} - -func (ev *EnvVar) ToString() string { - return fmt.Sprintf("%s=%s", ev.Key, ev.Val) -} - -func (e *Env) SetEnv(envVar *EnvVar) { - e.Vars = append(e.Vars, envVar) -} - -func (e *Env) ToStringEnv() []string { - var result []string - for _, envVar := range e.Vars { - result = append(result, envVar.ToString()) - } - return result -} - -func NewEnv(stringEnv []string) *Env { - env := &Env{} - for _, rawEnvVar := range stringEnv { - env.SetEnv(FromString(rawEnvVar)) - } - return env -} diff --git a/samples/gobuster-example/binary-env/server.go b/samples/gobuster-example/binary-env/server.go deleted file mode 100644 index 2ea99a0..0000000 --- a/samples/gobuster-example/binary-env/server.go +++ /dev/null @@ -1,178 +0,0 @@ -package main - -import ( - "encoding/json" - "flag" - "fmt" - "io" - "io/ioutil" - "net/http" - "os" - "os/exec" - "path/filepath" - "strings" -) - -const ( - DEFAULT_CODE_PATH = "/userfunc/user" - DEFAULT_INTERNAL_CODE_PATH = "/bin/userfunc" -) - -var specialized bool - -type ( - BinaryServer struct { - fetchedCodePath string - internalCodePath string - } - - FunctionLoadRequest struct { - // FilePath is an absolute filesystem path to the - // function. What exactly is stored here is - // env-specific. Optional. - FilePath string `json:"filepath"` - - // FunctionName has an environment-specific meaning; - // usually, it defines a function within a module - // containing multiple functions. Optional; default is - // environment-specific. - FunctionName string `json:"functionName"` - - // URL to expose this function at. Optional; defaults - // to "/". - URL string `json:"url"` - } -) - -func (bs *BinaryServer) SpecializeHandler(w http.ResponseWriter, r *http.Request) { - if specialized { - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte("Not a generic container")) - return - } - - request := FunctionLoadRequest{} - - codePath := bs.fetchedCodePath - err := json.NewDecoder(r.Body).Decode(&request) - switch { - case err == io.EOF: - case err != nil: - panic(err) - } - - if request.FilePath != "" { - fileStat, err := os.Stat(request.FilePath) - if err != nil { - panic(err) - } - - codePath = request.FilePath - switch mode := fileStat.Mode(); { - case mode.IsDir(): - codePath = filepath.Join(request.FilePath, request.FunctionName) - } - } - - _, err = os.Stat(codePath) - if err != nil { - if os.IsNotExist(err) { - w.WriteHeader(http.StatusNotFound) - w.Write([]byte(codePath + ": not found")) - return - } else { - panic(err) - } - } - - // Future: Check if executable is correct architecture/executable. - - // Copy the executable to ensure that file is executable and immutable. - userFunc, err := ioutil.ReadFile(codePath) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Failed to read executable.")) - return - } - err = ioutil.WriteFile(bs.internalCodePath, userFunc, 0555) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Failed to write executable to target location.")) - return - } - - fmt.Println("Specializing ...") - specialized = true - fmt.Println("Done") -} - -func (bs *BinaryServer) InvocationHandler(w http.ResponseWriter, r *http.Request) { - if !specialized { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte("Generic container: no requests supported")) - return - } - - // CGI-like passing of environment variables - execEnv := NewEnv(nil) - execEnv.SetEnv(&EnvVar{"REQUEST_METHOD", r.Method}) - execEnv.SetEnv(&EnvVar{"REQUEST_URI", r.RequestURI}) - execEnv.SetEnv(&EnvVar{"CONTENT_LENGTH", fmt.Sprintf("%d", r.ContentLength)}) - - for header, val := range r.Header { - execEnv.SetEnv(&EnvVar{fmt.Sprintf("HTTP_%s", strings.ToUpper(header)), val[0]}) - } - - // Future: could be improved by keeping subprocess open while environment is specialized - cmd := exec.Command(bs.internalCodePath) - cmd.Env = execEnv.ToStringEnv() - - if r.ContentLength != 0 { - fmt.Println(r.ContentLength) - stdin, err := cmd.StdinPipe() - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(fmt.Sprintf("Failed to get STDIN pipe: %s", err))) - panic(err) - } - _, err = io.Copy(stdin, r.Body) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(fmt.Sprintf("Failed to pipe input: %s", err))) - } - stdin.Close() - } - - out, err := cmd.Output() - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(fmt.Sprintf("Function error: %s", err))) - return - } - - w.WriteHeader(http.StatusOK) - w.Write(out) -} - -func main() { - codePath := flag.String("c", DEFAULT_CODE_PATH, "Path to expected fetched executable.") - internalCodePath := flag.String("i", DEFAULT_INTERNAL_CODE_PATH, "Path to specialized executable.") - flag.Parse() - absInternalCodePath, err := filepath.Abs(*internalCodePath) - if err != nil { - panic(err) - } - fmt.Printf("Using fetched code path: %s\n", *codePath) - fmt.Printf("Using internal code path: %s\n", absInternalCodePath) - - server := &BinaryServer{*codePath, absInternalCodePath} - http.HandleFunc("/", server.InvocationHandler) - http.HandleFunc("/specialize", server.SpecializeHandler) - http.HandleFunc("/v2/specialize", server.SpecializeHandler) - - fmt.Println("Listening on 8888 ...") - err = http.ListenAndServe(":8888", nil) - if err != nil { - panic(err) - } -} diff --git a/samples/gobuster-example/gobuster b/samples/gobuster-example/gobuster deleted file mode 100755 index c7e14e8..0000000 Binary files a/samples/gobuster-example/gobuster and /dev/null differ diff --git a/samples/gobuster-example/list.txt b/samples/gobuster-example/list.txt deleted file mode 100644 index c00ba69..0000000 --- a/samples/gobuster-example/list.txt +++ /dev/null @@ -1,4658 +0,0 @@ -.bash_history -.bashrc -.cache -.config -.cvs -.cvsignore -.forward -.git/HEAD -.history -.hta -.htaccess -.htpasswd -.listing -.listings -.mysql_history -.passwd -.perf -.profile -.rhosts -.sh_history -.ssh -.subversion -.svn -.svn/entries -.swf -.web -.well-known/acme-challenge -.well-known/apple-app-site-association -.well-known/apple-developer-merchantid-domain-association -.well-known/ashrae -.well-known/assetlinks.json -.well-known/autoconfig/mail -.well-known/browserid -.well-known/caldav -.well-known/carddav -.well-known/change-password -.well-known/coap -.well-known/core -.well-known/csvm -.well-known/dnt -.well-known/dnt-policy.txt -.well-known/dots -.well-known/ecips -.well-known/enterprise-transport-security -.well-known/est -.well-known/genid -.well-known/hoba -.well-known/host-meta -.well-known/host-meta.json -.well-known/http-opportunistic -.well-known/idp-proxy -.well-known/jmap -.well-known/keybase.txt -.well-known/looking-glass -.well-known/matrix -.well-known/mercure -.well-known/mta-sts.txt -.well-known/mud -.well-known/nfv-oauth-server-configuration -.well-known/ni -.well-known/nodeinfo -.well-known/oauth-authorization-server -.well-known/openid-configuration -.well-known/openorg -.well-known/openpgpkey -.well-known/pki-validation -.well-known/posh -.well-known/pvd -.well-known/reload-config -.well-known/repute-template -.well-known/resourcesync -.well-known/security.txt -.well-known/stun-key -.well-known/thread -.well-known/time -.well-known/timezone -.well-known/uma2-configuration -.well-known/void -.well-known/webfinger -0 -00 -01 -02 -03 -04 -05 -06 -07 -08 -09 -1 -10 -100 -1000 -1001 -101 -102 -103 -11 -12 -123 -13 -14 -15 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -1998 -1999 -1x1 -2 -20 -200 -2000 -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008 -2009 -2010 -2011 -2012 -2013 -2014 -21 -22 -2257 -23 -24 -25 -2g -3 -30 -300 -32 -3g -3rdparty -4 -400 -401 -403 -404 -42 -5 -50 -500 -51 -6 -64 -7 -7z -8 -9 -96 -@ -A -ADM -ADMIN -ADMON -AT-admin.cgi -About -AboutUs -Admin -AdminService -AdminTools -Administration -AggreSpy -AppsLocalLogin -AppsLogin -Archive -Articles -B -BUILD -BackOffice -Base -Blog -Books -Browser -Business -C -CMS -CPAN -CVS -CVS/Entries -CVS/Repository -CVS/Root -CYBERDOCS -CYBERDOCS25 -CYBERDOCS31 -ChangeLog -Computers -Contact -ContactUs -Content -Creatives -D -DB -DMSDump -Database_Administration -Default -Documents and Settings -Download -Downloads -E -Education -English -Entertainment -Entries -Events -Extranet -F -FAQ -FCKeditor -G -Games -Global -Graphics -H -HTML -Health -Help -Home -I -INSTALL_admin -Image -Images -Index -Indy_admin -Internet -J -JMXSoapAdapter -Java -L -LICENSE -Legal -Links -Linux -Log -LogFiles -Login -Logs -Lotus_Domino_Admin -M -MANIFEST.MF -META-INF -Main -Main_Page -Makefile -Media -Members -Menus -Misc -Music -N -News -O -OA -OAErrorDetailPage -OA_HTML -OasDefault -Office -P -PDF -PHP -PMA -Pages -People -Press -Privacy -Products -Program Files -Projects -Publications -R -RCS -README -RSS -Rakefile -Readme -RealMedia -Recycled -Research -Resources -Root -S -SERVER-INF -SOAPMonitor -SQL -SUNWmc -Scripts -Search -Security -Server -ServerAdministrator -Services -Servlet -Servlets -SiteMap -SiteScope -SiteServer -Sites -Software -Sources -Sports -Spy -Statistics -Stats -Super-Admin -Support -SysAdmin -SysAdmin2 -T -TEMP -TMP -TODO -Technology -Themes -Thumbs.db -Travel -U -US -UserFiles -Utilities -V -Video -W -W3SVC -W3SVC1 -W3SVC2 -W3SVC3 -WEB-INF -WS_FTP -WS_FTP.LOG -WebAdmin -Windows -X -XML -XXX -_ -_adm -_admin -_ajax -_archive -_assets -_backup -_baks -_borders -_cache -_catalogs -_common -_conf -_config -_css -_data -_database -_db_backups -_derived -_dev -_dummy -_files -_flash -_fpclass -_images -_img -_inc -_include -_includes -_install -_js -_layouts -_lib -_media -_mem_bin -_mm -_mmserverscripts -_mygallery -_notes -_old -_overlay -_pages -_private -_reports -_res -_resources -_scriptlibrary -_scripts -_source -_src -_stats -_styles -_swf -_temp -_tempalbums -_template -_templates -_test -_themes -_tmp -_tmpfileop -_vti_aut -_vti_bin -_vti_bin/_vti_adm/admin.dll -_vti_bin/_vti_aut/author.dll -_vti_bin/shtml.dll -_vti_cnf -_vti_inf -_vti_log -_vti_map -_vti_pvt -_vti_rpc -_vti_script -_vti_txt -_www -a -aa -aaa -abc -abc123 -abcd -abcd1234 -about -about-us -about_us -aboutus -abstract -abuse -ac -academic -academics -acatalog -acc -access -access-log -access-log.1 -access.1 -access_db -access_log -access_log.1 -accessgranted -accessibility -accessories -accommodation -account -account_edit -account_history -accountants -accounting -accounts -accountsettings -acct_login -achitecture -acp -act -action -actions -activate -active -activeCollab -activex -activities -activity -ad -ad_js -adaptive -adclick -add -add_cart -addfav -addnews -addons -addpost -addreply -address -address_book -addressbook -addresses -addtocart -adlog -adlogger -adm -admin -admin-admin -admin-console -admin-interface -administrator-panel -admin.cgi -admin.php -admin.pl -admin1 -admin2 -admin3 -admin4_account -admin4_colon -admin_ -admin_area -admin_banner -admin_c -admin_index -admin_interface -admin_login -admin_logon -admincontrol -admincp -adminhelp -administer -administr8 -administracion -administrador -administrat -administratie -administration -administrator -administratoraccounts -administrators -administrivia -adminlogin -adminlogon -adminpanel -adminpro -admins -adminsessions -adminsql -admintools -admissions -admon -adobe -adodb -ads -adserver -adsl -adv -adv_counter -advanced -advanced_search -advancedsearch -advert -advertise -advertisement -advertisers -advertising -adverts -advice -adview -advisories -af -aff -affiche -affiliate -affiliate_info -affiliate_terms -affiliates -affiliatewiz -africa -agb -agency -agenda -agent -agents -aggregator -ajax -ajax_cron -akamai -akeeba.backend.log -alarm -alarms -album -albums -alcatel -alert -alerts -alias -aliases -all -all-wcprops -alltime -alpha -alt -alumni -alumni_add -alumni_details -alumni_info -alumni_reunions -alumni_update -am -amanda -amazon -amember -analog -analog.html -analyse -analysis -analytics -and -android -android/config -announce -announcement -announcements -annuaire -annual -anon -anon_ftp -anonymous -ansi -answer -answers -antibot_image -antispam -antivirus -anuncios -any -aol -ap -apac -apache -apanel -apc -apexec -api -api/experiments -api/experiments/configurations -apis -apl -apm -app -app_browser -app_browsers -app_code -app_data -app_themes -appeal -appeals -append -appl -apple -apple-app-site-association -applet -applets -appliance -appliation -application -application.wadl -applications -apply -apps -apr -ar -arbeit -arcade -arch -architect -architecture -archiv -archive -archives -archivos -arquivos -array -arrow -ars -art -article -articles -artikel -artists -arts -artwork -as -ascii -asdf -ashley -asia -ask -ask_a_question -askapache -asmx -asp -aspadmin -aspdnsfcommon -aspdnsfencrypt -aspdnsfgateways -aspdnsfpatterns -aspnet_client -asps -aspx -asset -assetmanage -assetmanagement -assets -at -atom -attach -attach_mod -attachment -attachments -attachs -attic -au -auction -auctions -audio -audit -audits -auth -authentication -author -authoring -authorization -authorized_keys -authors -authuser -authusers -auto -autobackup -autocheck -autodeploy -autodiscover -autologin -automatic -automation -automotive -aux -av -avatar -avatars -aw -award -awardingbodies -awards -awl -awmdata -awstats -awstats.conf -axis -axis-admin -axis2 -axis2-admin -axs -az -b -b1 -b2b -b2c -back -back-up -backdoor -backend -background -backgrounds -backoffice -backup -backup-db -backup2 -backup_migrate -backups -bad_link -bak -bak-up -bakup -balance -balances -ban -bandwidth -bank -banking -banks -banned -banner -banner2 -banner_element -banneradmin -bannerads -banners -bar -base -baseball -bash -basic -basket -basketball -baskets -bass -bat -batch -baz -bb -bb-hist -bb-histlog -bbadmin -bbclone -bboard -bbs -bc -bd -bdata -be -bea -bean -beans -beehive -beheer -benefits -benutzer -best -beta -bfc -bg -big -bigadmin -bigip -bilder -bill -billing -bin -binaries -binary -bins -bio -bios -bitrix -biz -bk -bkup -bl -black -blah -blank -blb -block -blocked -blocks -blog -blog_ajax -blog_inlinemod -blog_report -blog_search -blog_usercp -blogger -bloggers -blogindex -blogs -blogspot -blow -blue -bm -bmz_cache -bnnr -bo -board -boards -bob -body -bofh -boiler -boilerplate -bonus -bonuses -book -booker -booking -bookmark -bookmarks -books -bookstore -boost_stats -boot -bot -bot-trap -bots -bottom -boutique -box -boxes -br -brand -brands -broadband -brochure -brochures -broken -broken_link -broker -browse -browser -bs -bsd -bt -bug -bugs -build -builder -buildr -bulk -bulksms -bullet -busca -buscador -buscar -business -button -buttons -buy -buynow -buyproduct -bypass -bz2 -c -cPanel -ca -cabinet -cache -cachemgr -cachemgr.cgi -caching -cad -cadmins -cal -calc -calendar -calendar_events -calendar_sports -calendarevents -calendars -call -callback -callee -caller -callin -calling -callout -cam -camel -campaign -campaigns -can -canada -captcha -car -carbuyaction -card -cardinal -cardinalauth -cardinalform -cards -career -careers -carp -carpet -cars -cart -carthandler -carts -cas -cases -casestudies -cash -cat -catalog -catalog.wci -catalogs -catalogsearch -catalogue -catalyst -catch -categoria -categories -category -catinfo -cats -cb -cc -ccbill -ccount -ccp14admin -ccs -cd -cdrom -centres -cert -certenroll -certificate -certificates -certification -certified -certs -certserver -certsrv -cf -cfc -cfcache -cfdocs -cfg -cfide -cfm -cfusion -cgi -cgi-bin -cgi-bin/ -cgi-bin2 -cgi-data -cgi-exe -cgi-home -cgi-image -cgi-local -cgi-perl -cgi-pub -cgi-script -cgi-shl -cgi-sys -cgi-web -cgi-win -cgi_bin -cgibin -cgis -cgiwrap -cgm-web -ch -chan -change -change_password -changed -changelog -changepw -changes -channel -charge -charges -chart -charts -chat -chats -check -checking -checkout -checkout_iclear -checkoutanon -checkoutreview -checkpoint -checks -child -children -china -chk -choosing -chris -chrome -cinema -cisco -cisweb -cities -citrix -city -ck -ckeditor -ckfinder -cl -claim -claims -class -classes -classic -classified -classifieds -classroompages -cleanup -clear -clearcookies -clearpixel -click -clickheat -clickout -clicks -client -client_configs -clientaccesspolicy -clientapi -clientes -clients -clientscript -clipart -clips -clk -clock -close -closed -closing -club -cluster -clusters -cm -cmd -cmpi_popup -cms -cmsadmin -cn -cnf -cnstats -cnt -co -cocoon -code -codec -codecs -codepages -codes -coffee -cognos -coke -coldfusion -collapse -collection -college -columnists -columns -com -com1 -com2 -com3 -com4 -com_sun_web_ui -comics -comm -command -comment -comment-page -comment-page-1 -commentary -commented -comments -commerce -commercial -common -commoncontrols -commun -communication -communications -communicator -communities -community -comp -compact -companies -company -compare -compare_product -comparison -comparison_list -compat -compiled -complaint -complaints -compliance -component -components -compose -composer -compress -compressed -computer -computers -computing -comunicator -con -concrete -conditions -conf -conference -conferences -config -config.local -configs -configuration -configure -confirm -confirmed -conlib -conn -connect -connections -connector -connectors -console -constant -constants -consulting -consumer -cont -contact -contact-form -contact-us -contact_bean -contact_us -contactinfo -contacto -contacts -contacts.txt -contactus -contao -contato -contenido -content -contents -contest -contests -contract -contracts -contrib -contribute -contributor -control -controller -controllers -controlpanel -controls -converge_local -converse -cookie -cookie_usage -cookies -cool -copies -copy -copyright -copyright-policy -corba -core -coreg -corp -corpo -corporate -corporation -corrections -count -counter -counters -country -counts -coupon -coupons -coupons1 -course -courses -cover -covers -cp -cpadmin -cpanel -cpanel_file -cpath -cpp -cps -cpstyles -cr -crack -crash -crashes -create -create_account -createaccount -createbutton -creation -creator -credentials -credentials.txt -credit -creditcards -credits -crime -crm -crms -cron -cronjobs -crons -crontab -crontabs -crossdomain -crossdomain.xml -crs -crtr -crypt -crypto -cs -cse -csproj -css -csv -ct -ctl -culture -currency -current -custom -custom-log -custom_log -customavatars -customcode -customer -customer_login -customers -customgroupicons -customize -cute -cutesoft_client -cv -cvs -cxf -cy -cyberworld -cycle_image -cz -czcmdcvt -d -da -daemon -daily -dan -dana-na -dark -dashboard -dat -data -database -database_administration -databases -datafiles -datas -date -daten -datenschutz -dating -dav -day -db -db_connect -dba -dbadmin -dbase -dbboon -dbg -dbi -dblclk -dbm -dbman -dbmodules -dbms -dbutil -dc -dcforum -dclk -de -de_DE -deal -dealer -dealers -deals -debian -debug -dec -decl -declaration -declarations -decode -decoder -decrypt -decrypted -decryption -def -default -default_icon -default_image -default_logo -default_page -default_pages -defaults -definition -definitions -del -delete -deleted -deleteme -deletion -delicious -demo -demo2 -demos -denied -deny -departments -deploy -deployment -descargas -design -designs -desktop -desktopmodules -desktops -destinations -detail -details -deutsch -dev -dev2 -dev60cgi -devel -develop -developement -developer -developers -development -development.log -device -devices -devs -devtools -df -dh_ -dh_phpmyadmin -di -diag -diagnostics -dial -dialog -dialogs -diary -dictionary -diff -diffs -dig -digest -digg -digital -dir -dir-login -dir-prop-base -dirbmark -direct -directadmin -directions -directories -directorio -directory -dirs -disabled -disallow -disclaimer -disclosure -discootra -discount -discovery -discus -discuss -discussion -disdls -disk -dispatch -dispatcher -display -display_vvcodes -dist -divider -django -dk -dl -dll -dm -dm-config -dmdocuments -dms -dms0 -dns -do -doc -docebo -docedit -dock -docroot -docs -docs41 -docs51 -document -document_library -documentation -documents -doinfo -dokuwiki -domain -domains -donate -donations -done -dot -doubleclick -down -download -download_private -downloader -downloads -downsys -draft -drafts -dragon -draver -driver -drivers -drop -dropped -drupal -ds -dummy -dump -dumpenv -dumps -dumpuser -dvd -dwr -dyn -dynamic -dyop_addtocart -dyop_delete -dyop_quan -e -e-mail -e-store -e107_admin -e107_files -e107_handlers -e2fs -ear -easy -ebay -eblast -ebook -ebooks -ebriefs -ec -ecard -ecards -echannel -ecommerce -ecrire -edge -edgy -edit -edit_link -edit_profile -editaddress -editor -editorial -editorials -editors -editpost -edits -edp -edu -education -ee -effort -efforts -egress -ehdaa -ejb -el -electronics -element -elements -elmar -em -email -email-a-friend -email-addresses -emailafriend -emailer -emailhandler -emailing -emailproduct -emails -emailsignup -emailtemplates -embed -embedd -embedded -emea -emergency -emoticons -employee -employees -employers -employment -empty -emu -emulator -en -en_US -en_us -enable-cookies -enc -encode -encoder -encrypt -encrypted -encryption -encyption -end -enduser -endusers -energy -enews -eng -engine -engines -english -enterprise -entertainment -entries -entropybanner -entry -env -environ -environment -ep -eproducts -equipment -eric -err -erraddsave -errata -error -error-espanol -error-log -error404 -error_docs -error_log -error_message -error_pages -errordocs -errorpage -errorpages -errors -erros -es -es_ES -esale -esales -eshop -esp -espanol -established -estilos -estore -esupport -et -etc -ethics -eu -europe -evb -event -events -evil -evt -ewebeditor -ews -ex -example -examples -excalibur -excel -exception_log -exch -exchange -exchweb -exclude -exe -exec -executable -executables -exiar -exit -expert -experts -exploits -explore -explorer -export -exports -ext -ext2 -extension -extensions -extern -external -externalid -externalisation -externalization -extra -extranet -extras -ezshopper -ezsqliteadmin -f -fa -fabric -face -facebook -faces -facts -faculty -fail -failed -failure -fake -family -fancybox -faq -faqs -fashion -favicon.ico -favorite -favorites -fb -fbook -fc -fcategory -fcgi -fcgi-bin -fck -fckeditor -fdcp -feature -featured -features -fedora -feed -feedback -feedback_js -feeds -felix -fetch -fi -field -fields -file -fileadmin -filelist -filemanager -files -fileupload -fileuploads -filez -film -films -filter -finance -financial -find -finger -finishorder -firefox -firewall -firewalls -firmconnect -firms -firmware -first -fixed -fk -fla -flag -flags -flash -flash-intro -flex -flights -flow -flowplayer -flows -flv -flvideo -flyspray -fm -fn -focus -foia -folder -folder_new -folders -font -fonts -foo -food -football -footer -footers -for -forcedownload -forget -forgot -forgot-password -forgot_password -forgotpassword -forgotten -form -format -formatting -formhandler -formmail -forms -forms1 -formsend -formslogin -formupdate -foro -foros -forrest -fortune -forum -forum1 -forum2 -forum_old -forumcp -forumdata -forumdisplay -forums -forward -foto -fotos -foundation -fpdb -fpdf -fr -fr_FR -frame -frames -frameset -framework -francais -france -free -freebsd -freeware -french -friend -friends -frm_attach -frob -from -front -frontend -frontpage -fs -fsck -ftp -fuck -fuckoff -fuckyou -full -fun -func -funcs -function -function.require -functionlude -functions -fund -funding -funds -furl -fusion -future -fw -fwlink -fx -g -ga -gadget -gadgets -gaestebuch -galeria -galerie -galleries -gallery -gallery2 -game -gamercard -games -gaming -ganglia -garbage -gate -gateway -gb -gbook -gccallback -gdform -geeklog -gen -general -generateditems -generator -generic -gentoo -geo -geoip -german -geronimo -gest -gestion -gestione -get -get-file -getFile.cfm -get_file -getaccess -getconfig -getfile -getjobid -getout -gettxt -gfen -gfx -gg -gid -gif -gifs -gift -giftcert -giftoptions -giftreg_manage -giftregs -gifts -git -gitweb -gl -glance_config -glimpse -global -global.asa -global.asax -globalnav -globals -globes_admin -glossary -go -goaway -gold -golf -gone -goods -goods_script -google -google_sitemap -googlebot -goto -government -gp -gpapp -gpl -gprs -gps -gr -gracias -grafik -grant -granted -grants -graph -graphics -green -greybox -grid -group -group_inlinemod -groupcp -groups -groupware -gs -gsm -guess -guest -guest-tracking -guestbook -guests -gui -guide -guidelines -guides -gump -gv_faq -gv_redeem -gv_send -gwt -gz -h -hack -hacker -hacking -hackme -hadoop -handle -handler -handlers -handles -happen -happening -hard -hardcore -hardware -harm -harming -harmony -head -header -header_logo -headers -headlines -health -healthcare -hello -helloworld -help -help_answer -helpdesk -helper -helpers -hi -hidden -hide -high -highslide -hilfe -hipaa -hire -history -hit -hitcount -hits -hold -hole -holiday -holidays -home -homepage -homes -homework -honda -hooks -hop -horde -host -host-manager -hosted -hosting -hosts -hotel -hotels -hour -hourly -house -how -howto -hp -hpwebjetadmin -hr -ht -hta -htbin -htdig -htdoc -htdocs -htm -html -htmlarea -htmls -htpasswd -http -httpd -httpdocs -httpmodules -https -httpuser -hu -human -humans -humor -hyper -i -ia -ibm -icat -ico -icon -icons -icq -id -id_rsa -id_rsa.pub -idbc -idea -ideas -identity -idp -ids -ie -if -iframe -iframes -ig -ignore -ignoring -iis -iisadmin -iisadmpwd -iissamples -im -image -imagefolio -imagegallery -imagenes -imagens -images -images01 -images1 -images2 -images3 -imanager -img -img2 -imgs -immagini -imp -import -important -imports -impressum -in -inbound -inbox -inc -incl -include -includes -incoming -incs -incubator -index -index.htm -index.html -index.php -index1 -index2 -index2.php -index3 -index3.php -index_01 -index_1 -index_2 -index_adm -index_admin -index_files -index_var_de -indexes -industries -industry -indy_admin -inetpub -inetsrv -inf -info -info.php -information -informer -infos -infos.php -infraction -ingres -ingress -ini -init -injection -inline -inlinemod -input -inquire -inquiries -inquiry -insert -install -install-xaff -install-xaom -install-xbench -install-xfcomp -install-xoffers -install-xpconf -install-xrma -install-xsurvey -install.mysql -install.pgsql -installation -installer -installwordpress -instance -instructions -insurance -int -intel -intelligence -inter -interactive -interface -interim -intermediate -intern -internal -international -internet -interview -interviews -intl -intra -intracorp -intranet -intro -introduction -inventory -investors -invitation -invite -invoice -invoices -ioncube -ios/config -ip -ipc -ipdata -iphone -ipn -ipod -ipp -ips -ips_kernel -ir -iraq -irc -irc-macadmin -is -is-bin -isapi -iso -isp -issue -issues -it -it_IT -ita -item -items -iw -j -j2ee -j2me -ja -ja_JP -jacob -jakarta -japan -jar -java -java-plugin -java-sys -javac -javadoc -javascript -javascripts -javax -jboss -jbossas -jbossws -jdbc -jdk -jennifer -jessica -jexr -jhtml -jigsaw -jira -jj -jmx-console -job -jobs -joe -john -join -joinrequests -joomla -journal -journals -jp -jpa -jpegimage -jpg -jquery -jre -jrun -js -js-lib -jsFiles -jscript -jscripts -jsession -jsf -json -json-api -jsp -jsp-examples -jsp2 -jsps -jsr -jsso -jsx -jump -juniper -junk -jvm -k -katalog -kb -kb_results -kboard -kcaptcha -keep -kept -kernel -key -keygen -keys -keyword -keywords -kids -kill -kiosk -known_hosts -ko -ko_KR -kontakt -konto-eroeffnen -kr -kunden -l -la -lab -labels -labs -landing -landingpages -landwind -lang -lang-en -lang-fr -langs -language -languages -laptops -large -lastnews -lastpost -lat_account -lat_driver -lat_getlinking -lat_signin -lat_signout -lat_signup -latest -launch -launcher -launchpage -law -layout -layouts -ldap -leader -leaders -leads -learn -learners -learning -left -legacy -legal -legal-notice -legislation -lenya -lessons -letters -level -lg -lgpl -lib -librairies -libraries -library -libs -lic -licence -license -license_afl -licenses -licensing -life -lifestyle -lightbox -limit -line -link -link-to-us -linkex -linkmachine -links -links_submit -linktous -linux -lisence -lisense -list -list-create -list-edit -list-search -list-users -list-view -list_users -listadmin -listinfo -listing -listings -lists -listusers -listview -live -livechat -livehelp -livesupport -livezilla -lo -load -loader -loading -loc -local -locale -localstart -location -locations -locator -lock -locked -lockout -lofiversion -log -log4j -log4net -logfile -logfiles -logfileview -logger -logging -login -login-redirect -login-us -login1 -login_db -login_sendpass -loginadmin -loginflat -logins -logo -logo_sysadmin -logoff -logon -logos -logout -logs -logview -loja -lost -lost+found -lostpassword -love -low -lp -lpt1 -lpt2 -ls -lst -lt -lucene -lunch_menu -lv -m -m1 -m6 -m6_edit_item -m6_invoice -m6_pay -m7 -m_images -ma -mac -macadmin -macromedia -maestro -magazin -magazine -magazines -magento -magic -magnifier_xml -magpierss -mail -mail_link -mail_password -mailbox -mailer -mailing -mailinglist -mailings -maillist -mailman -mails -mailtemplates -mailto -main -main.mdb -mainfile -maint -maintainers -mainten -maintenance -makefile -mal -mall -mambo -mambots -man -mana -manage -managed -management -manager -manifest -manifest.mf -mantis -manual -manuallogin -manuals -manufacturer -manufacturers -map -maps -mark -market -marketing -marketplace -markets -master -master.passwd -masterpages -masters -masthead -match -matches -math -matrix -matt -maven -mb -mbo -mbox -mc -mchat -mcp -mdb -mdb-database -me -media -media_center -mediakit -mediaplayer -medias -mediawiki -medium -meetings -mein-konto -mein-merkzettel -mem -member -member2 -memberlist -members -membership -membre -membres -memcached -memcp -memlogin -memo -memory -menu -menus -merchant -merchant2 -message -messageboard -messages -messaging -meta -meta-inf -meta_login -meta_tags -metabase -metadata -metaframe -metatags -mgr -michael -microsoft -midi -migrate -migrated -migration -military -min -mina -mine -mini -mini_cal -minicart -minimum -mint -minute -mirror -mirrors -misc -miscellaneous -missing -mission -mix -mk -mkstats -ml -mlist -mm -mm5 -mms -mmwip -mo -mobi -mobil -mobile -mock -mod -modcp -mode -model -models -modelsearch -modem -moderation -moderator -modify -modlogan -mods -module -modules -modulos -mojo -money -monitor -monitoring -monitors -month -monthly -moodle -more -motd -moto-news -moto1 -mount -move -moved -movie -movies -moving.page -mozilla -mp -mp3 -mp3s -mqseries -mrtg -ms -ms-sql -msadc -msadm -msft -msg -msie -msn -msoffice -mspace -msql -mssql -mstpre -mt -mt-bin -mt-search -mt-static -mta -multi -multimedia -music -mx -my -my-account -my-components -my-gift-registry -my-sql -my-wishlist -myaccount -myadmin -myblog -mycalendar -mycgi -myfaces -myhomework -myicons -mypage -myphpnuke -myspace -mysql -mysqld -mysqldumper -mysqlmanager -mytag_js -mytp -n -nachrichten -nagios -name -names -national -nav -navSiteAdmin -navigation -navsiteadmin -nc -ne -net -netbsd -netcat -nethome -nets -netscape -netstat -netstorage -network -networking -new -newadmin -newattachment -newposts -newreply -news -news_insert -newsadmin -newsite -newsletter -newsletters -newsline -newsroom -newssys -newstarter -newthread -newticket -next -nfs -nice -nieuws -ningbar -nk9 -nl -no -no-index -nobody -node -noindex -nokia -none -note -notes -notfound -noticias -notification -notifications -notified -notifier -notify -novell -nr -ns -nsf -ntopic -nude -nuke -nul -null -number -nxfeed -nz -o -oa_servlets -oauth -obdc -obj -object -objects -obsolete -obsoleted -odbc -ode -oem -of -ofbiz -off -offer -offerdetail -offers -office -offices -offline -ogl -old -old-site -old_site -oldie -oldsite -omited -on -onbound -online -onsite -op -open -open-account -openads -openapp -openbsd -opencart -opendir -openejb -openfile -openjpa -opensearch -opensource -openvpnadmin -openx -opera -operations -operator -opinion -opinions -opml -oprocmgr-status -opros -opt -option -options -ora -oracle -oradata -order -order-detail -order-follow -order-history -order-opc -order-return -order-slip -order_history -order_status -orderdownloads -ordered -orderfinished -orders -orderstatus -ordertotal -org -organisation -organisations -organizations -orig -original -os -osc -oscommerce -other -others -otrs -out -outcome -outgoing -outils -outline -output -outreach -oversikt -overview -owa -owl -owners -ows -ows-bin -p -p2p -p7pm -pa -pack -package -packaged -packages -packaging -packed -pad -page -page-not-found -page1 -page2 -page_1 -page_2 -page_sample1 -pageid -pagenotfound -pager -pages -pagination -paid -paiement -pam -panel -panelc -paper -papers -parse -part -partenaires -partner -partners -parts -party -pass -passes -passive -passport -passw -passwd -passwor -password -passwords -past -patch -patches -patents -path -pay -payment -payment_gateway -payments -paypal -paypal_notify -paypalcancel -paypalok -pbc_download -pbcs -pbcsad -pbcsi -pbo -pc -pci -pconf -pd -pda -pdf -pdf-invoice -pdf-order-slip -pdfs -pear -peek -peel -pem -pending -people -perf -performance -perl -perl5 -person -personal -personals -pfx -pg -pgadmin -pgp -pgsql -phf -phishing -phone -phones -phorum -photo -photodetails -photogallery -photography -photos -php -php-bin -php-cgi -php.ini -php168 -php3 -phpBB -phpBB2 -phpBB3 -phpEventCalendar -phpMyAdmin -phpMyAdmin2 -phpSQLiteAdmin -php_uploads -phpadmin -phpads -phpadsnew -phpbb -phpbb2 -phpbb3 -phpinfo -phpinfo.php -phpinfos.php -phpldapadmin -phplist -phplive -phpmailer -phpmanual -phpmv2 -phpmyadmin -phpmyadmin2 -phpnuke -phppgadmin -phps -phpsitemapng -phpthumb -phtml -pic -pics -picts -picture -picture_library -picturecomment -pictures -pii -ping -pingback -pipe -pipermail -piranha -pivot -piwik -pix -pixel -pixelpost -pkg -pkginfo -pkgs -pl -placeorder -places -plain -plate -platz_login -play -player -player.swf -players -playing -playlist -please -plenty -plesk-stat -pls -plugin -plugins -plus -plx -pm -pma -pmwiki -pnadodb -png -pntables -pntemp -poc -podcast -podcasting -podcasts -poi -poker -pol -policies -policy -politics -poll -pollbooth -polls -pollvote -pool -pop -pop3 -popular -populate -popup -popup_content -popup_cvv -popup_image -popup_info -popup_magnifier -popup_poptions -popups -porn -port -portal -portals -portfolio -portfoliofiles -portlet -portlets -ports -pos -post -post_thanks -postcard -postcards -posted -postgres -postgresql -posthistory -postinfo -posting -postings -postnuke -postpaid -postreview -posts -posttocar -power -power_user -pp -ppc -ppcredir -ppt -pr -pr0n -pre -preferences -preload -premiere -premium -prepaid -prepare -presentation -presentations -preserve -press -press_releases -presse -pressreleases -pressroom -prev -preview -previews -previous -price -pricelist -prices -pricing -print -print_order -printable -printarticle -printenv -printer -printers -printmail -printpdf -printthread -printview -priv -privacy -privacy-policy -privacy_policy -privacypolicy -privat -private -private2 -privateassets -privatemsg -prive -privmsg -privs -prn -pro -probe -problems -proc -procedures -process -process_order -processform -procure -procurement -prod -prodconf -prodimages -producers -product -product-sort -product_compare -product_image -product_images -product_info -product_reviews -product_thumb -productdetails -productimage -production -production.log -productquestion -products -products_new -productspecs -productupdates -produkte -professor -profil -profile -profiles -profiling -proftpd -prog -program -programming -programs -progress -project -project-admins -projects -promo -promos -promoted -promotion -promotions -proof -proofs -prop -prop-base -properties -property -props -prot -protect -protected -protection -proto -provider -providers -proxies -proxy -prueba -pruebas -prv -prv_download -ps -psd -psp -psql -pt -pt_BR -ptopic -pub -public -public_ftp -public_html -publication -publications -publicidad -publish -published -publisher -pubs -pull -purchase -purchases -purchasing -pureadmin -push -put -putty -putty.reg -pw -pw_ajax -pw_api -pw_app -pwd -py -python -q -q1 -q2 -q3 -q4 -qa -qinetiq -qotd -qpid -qsc -quarterly -queries -query -question -questions -queue -queues -quick -quickstart -quiz -quote -quotes -r -r57 -radcontrols -radio -radmind -radmind-1 -rail -rails -ramon -random -rank -ranks -rar -rarticles -rate -ratecomment -rateit -ratepic -rates -ratethread -rating -rating0 -ratings -rb -rcLogin -rcp -rcs -rct -rd -rdf -read -reader -readfile -readfolder -readme -real -realaudio -realestate -receipt -receipts -receive -received -recent -recharge -recherche -recipes -recommend -recommends -record -recorded -recorder -records -recoverpassword -recovery -recycle -recycled -red -reddit -redesign -redir -redirect -redirector -redirects -redis -ref -refer -reference -references -referer -referral -referrers -refuse -refused -reg -reginternal -region -regional -register -registered -registration -registrations -registro -reklama -related -release -releases -religion -remind -remind_password -reminder -remote -remotetracer -removal -removals -remove -removed -render -rendered -reorder -rep -repl -replica -replicas -replicate -replicated -replication -replicator -reply -repo -report -reporting -reports -reports list -repository -repost -reprints -reputation -req -reqs -request -requested -requests -require -requisite -requisition -requisitions -res -research -reseller -resellers -reservation -reservations -resin -resin-admin -resize -resolution -resolve -resolved -resource -resources -respond -responder -rest -restaurants -restore -restored -restricted -result -results -resume -resumes -retail -returns -reusablecontent -reverse -reversed -revert -reverted -review -reviews -rfid -rhtml -right -ro -roadmap -roam -roaming -robot -robotics -robots -robots.txt -role -roles -roller -room -root -rorentity -rorindex -rortopics -route -router -routes -rpc -rs -rsa -rss -rss10 -rss2 -rss20 -rssarticle -rssfeed -rsync -rte -rtf -ru -rub -ruby -rule -rules -run -rus -rwservlet -s -s1 -sa -safe -safety -sale -sales -salesforce -sam -samba -saml -sample -samples -san -sandbox -sav -save -saved -saves -sb -sbin -sc -scan -scanned -scans -scgi-bin -sched -schedule -scheduled -scheduling -schema -schemas -schemes -school -schools -science -scope -scr -scratc -screen -screens -screenshot -screenshots -script -scripte -scriptlet -scriptlets -scriptlibrary -scriptresource -scripts -sd -sdk -se -search -search-results -search_result -search_results -searchnx -searchresults -searchurl -sec -seccode -second -secondary -secret -secrets -section -sections -secure -secure_login -secureauth -secured -secureform -secureprocess -securimage -security -seed -select -selectaddress -selected -selection -self -sell -sem -seminar -seminars -send -send-password -send_order -send_pwd -send_to_friend -sendform -sendfriend -sendmail -sendmessage -sendpm -sendthread -sendto -sendtofriend -sensepost -sensor -sent -seo -serial -serv -serve -server -server-info -server-status -server_admin_small -server_stats -servers -service -services -servicios -servlet -servlets -servlets-examples -sess -session -sessionid -sessions -set -setcurrency -setlocale -setting -settings -setup -setvatsetting -sex -sf -sg -sh -shadow -shaken -share -shared -shares -shell -shim -ship -shipped -shipping -shipping_help -shippinginfo -shipquote -shit -shockwave -shop -shop_closed -shop_content -shopadmin -shopper -shopping -shopping-lists -shopping_cart -shoppingcart -shops -shops_buyaction -shopstat -shopsys -shoutbox -show -show_post -show_thread -showallsites -showcase -showcat -showcode -showcode.asp -showenv -showgroups -showjobs -showkey -showlogin -showmap -showmsg -showpost -showroom -shows -showthread -shtml -si -sid -sign -sign-up -sign_up -signature -signaturepics -signed -signer -signin -signing -signoff -signon -signout -signup -simple -simpleLogin -simplelogin -single -single_pages -sink -site -site-map -site_map -siteadmin -sitebuilder -sitecore -sitefiles -siteimages -sitemap -sitemap.gz -sitemap.xml -sitemaps -sitemgr -sites -sitesearch -sk -skel -skin -skin1 -skin1_original -skins -skip -sl -slabel -slashdot -slide_show -slides -slideshow -slimstat -sling -sm -small -smarty -smb -smblogin -smf -smile -smiles -smileys -smilies -sms -smtp -snippets -snoop -snp -so -soap -soapdocs -soaprouter -social -soft -software -sohoadmin -solaris -sold -solution -solutions -solve -solved -somebody -songs -sony -soporte -sort -sound -sounds -source -sources -sox -sp -space -spacer -spain -spam -spamlog.log -spanish -spaw -speakers -spec -special -special_offers -specials -specified -specs -speedtest -spellchecker -sphider -spider -spiders -splash -sponsor -sponsors -spool -sport -sports -spotlight -spryassets -spyware -sq -sql -sql-admin -sqladmin -sqlmanager -sqlnet -sqlweb -squelettes -squelettes-dist -squirrel -squirrelmail -sr -src -srchad -srv -ss -ss_vms_admin_sm -ssfm -ssh -sshadmin -ssi -ssl -ssl_check -sslvpn -ssn -sso -ssp_director -st -stackdump -staff -staff_directory -stage -staging -stale -standalone -standard -standards -star -staradmin -start -starter -startpage -stat -state -statement -statements -states -static -staticpages -statistic -statistics -statistik -stats -statshistory -status -statusicon -stock -stoneedge -stop -storage -store -store_closed -stored -stores -stories -story -stow -strategy -stream -string -strut -struts -student -students -studio -stuff -style -style_avatars -style_captcha -style_css -style_emoticons -style_images -styles -stylesheet -stylesheets -sub -sub-login -subdomains -subject -submenus -submissions -submit -submitter -subs -subscribe -subscribed -subscriber -subscribers -subscription -subscriptions -success -suche -sucontact -suffix -suggest -suggest-listing -suite -suites -summary -sun -sunos -super -supplier -support -support_login -supported -surf -survey -surveys -suspended.page -suupgrade -sv -svc -svn -svn-base -svr -sw -swajax1 -swf -swfobject.js -swfs -switch -sws -synapse -sync -synced -syndication -sys -sys-admin -sysadmin -sysadmin2 -sysadmins -sysmanager -system -system-admin -system-administration -system_admin -system_administration -system_web -systems -sysuser -szukaj -t -t1 -t3lib -table -tabs -tag -tagline -tags -tail -talk -talks -tape -tapes -tapestry -tar -tar.bz2 -tar.gz -target -tartarus -task -tasks -taxonomy -tb -tcl -te -team -tech -technical -technology -tel -tele -television -tell_a_friend -tell_friend -tellafriend -temaoversikt -temp -templ -template -templates -templates_c -templets -temporal -temporary -temps -term -terminal -terms -terms-of-use -terms_privacy -termsofuse -terrorism -test -test-cgi -test-env -test1 -test123 -test1234 -test2 -test3 -test_db -teste -testimonial -testimonials -testing -tests -testsite -texis -text -text-base -textobject -textpattern -texts -tgp -tgz -th -thank-you -thanks -thankyou -the -theme -themes -thickbox -third-party -this -thread -threadrate -threads -threadtag -thumb -thumbnail -thumbnails -thumbs -thumbs.db -ticket -ticket_list -ticket_new -tickets -tienda -tiki -tiles -time -timeline -tiny_mce -tinymce -tip -tips -title -titles -tl -tls -tmp -tmpl -tmps -tn -tncms -to -toc -today -todel -todo -toggle -tomcat -tomcat-docs -tool -toolbar -toolkit -tools -top -top1 -topic -topicadmin -topics -toplist -toplists -topnav -topsites -torrent -torrents -tos -tour -tours -toys -tp -tpl -tpv -tr -trac -trace -traceroute -traces -track -trackback -trackclick -tracker -trackers -tracking -trackpackage -tracks -trade -trademarks -traffic -trailer -trailers -training -trans -transaction -transactions -transfer -transformations -translate -translations -transparent -transport -trap -trash -travel -treasury -tree -trees -trends -trial -true -trunk -tslib -tsweb -tt -tuning -turbine -tuscany -tutorial -tutorials -tv -tw -twatch -tweak -twiki -twitter -tx -txt -type -typo3 -typo3_src -typo3conf -typo3temp -typolight -u -ua -ubb -uc -uc_client -uc_server -ucenter -ucp -uddi -uds -ui -uk -umbraco -umbraco_client -umts -uncategorized -under_update -uninstall -union -unix -unlock -unpaid -unreg -unregister -unsafe -unsubscribe -unused -up -upcoming -upd -update -updated -updateinstaller -updater -updates -updates-topic -upgrade -upgrade.readme -upload -upload_file -upload_files -uploaded -uploadedfiles -uploadedimages -uploader -uploadfile -uploadfiles -uploads -ur-admin -urchin -url -urlrewriter -urls -us -usa -usage -user -user_upload -useradmin -userapp -usercontrols -usercp -usercp2 -userdir -userfiles -userimages -userinfo -userlist -userlog -userlogin -usermanager -username -usernames -usernote -users -usr -usrmgr -usrs -ustats -usuario -usuarios -util -utilities -utility -utility_login -utils -v -v1 -v1/client_configs -v2 -v2/client_configs -v3 -v4 -vadmind -validation -validatior -vap -var -vault -vb -vbmodcp -vbs -vbscript -vbscripts -vbseo -vbseocp -vcss -vdsbackup -vector -vehicle -vehiclemakeoffer -vehiclequote -vehicletestdrive -velocity -venda -vendor -vendors -ver -ver1 -ver2 -version -verwaltung -vfs -vi -viagra -vid -video -videos -view -view-source -view_cart -viewcart -viewcvs -viewer -viewfile -viewforum -viewlogin -viewonline -views -viewsource -viewsvn -viewthread -viewtopic -viewvc -vip -virtual -virus -visit -visitor -visitormessage -vista -vm -vmailadmin -void -voip -vol -volunteer -vote -voted -voter -votes -vp -vpg -vpn -vs -vsadmin -vuln -vvc_display -w -w3 -w3c -w3svc -wa -wallpaper -wallpapers -wap -war -warenkorb -warez -warn -way-board -wbboard -wbsadmin -wc -wcs -wdav -weather -web -web-beans -web-console -web-inf -web.config -web.xml -web1 -web2 -web3 -web_users -webaccess -webadm -webadmin -webagent -webalizer -webapp -webapps -webb -webbbs -webboard -webcalendar -webcam -webcart -webcast -webcasts -webcgi -webcharts -webchat -webctrl_client -webdata -webdav -webdb -webdist -webedit -webfm_send -webhits -webim -webinar -weblog -weblogic -weblogs -webmail -webmaster -webmasters -webpages -webplus -webresource -websearch -webservice -webservices -webshop -website -websites -websphere -websql -webstat -webstats -websvn -webtrends -webusers -webvpn -webwork -wedding -week -weekly -welcome -wellcome -werbung -wget -what -whatever -whatnot -whatsnew -white -whitepaper -whitepapers -who -whois -wholesale -whosonline -why -wicket -wide_search -widget -widgets -wifi -wii -wiki -will -win -win32 -windows -wink -winnt -wireless -wishlist -with -wizmysqladmin -wml -wolthuis -word -wordpress -work -workarea -workflowtasks -working -workplace -works -workshop -workshops -world -worldpayreturn -worldwide -wow -wp -wp-admin -wp-app -wp-atom -wp-blog-header -wp-comments -wp-commentsrss2 -wp-config -wp-content -wp-cron -wp-dbmanager -wp-feed -wp-icludes -wp-images -wp-includes -wp-links-opml -wp-load -wp-login -wp-mail -wp-pass -wp-rdf -wp-register -wp-rss -wp-rss2 -wp-settings -wp-signup -wp-syntax -wp-trackback -wpau-backup -wpcallback -wpcontent -wps -wrap -writing -ws -ws-client -ws_ftp -wsdl -wss -wstat -wstats -wt -wtai -wusage -wwhelp -www -www-sql -www1 -www2 -www3 -wwwboard -wwwjoin -wwwlog -wwwroot -wwwstat -wwwstats -wwwthreads -wwwuser -wysiwyg -wysiwygpro -x -xajax -xajax_js -xalan -xbox -xcache -xcart -xd_receiver -xdb -xerces -xfer -xhtml -xlogin -xls -xmas -xml -xml-rpc -xmlfiles -xmlimporter -xmlrpc -xmlrpc.php -xn -xsl -xslt -xsql -xx -xxx -xyz -xyzzy -y -yahoo -year -yearly -yesterday -yml -yonetici -yonetim -youtube -yshop -yt -yui -z -zap -zboard -zencart -zend -zero -zeus -zh -zh-cn -zh-tw -zh_CN -zh_TW -zimbra -zip -zipfiles -zips -zoeken -zoom -zope -zorum -zt -~adm -~admin -~administrator -~amanda -~apache -~bin -~ftp -~guest -~http -~httpd -~log -~logs -~lp -~mail -~nobody -~operator -~root -~sys -~sysadm -~sysadmin -~test -~tmp -~user -~webmaster -~www diff --git a/samples/gobuster-example/list_small.txt b/samples/gobuster-example/list_small.txt deleted file mode 100644 index db0010c..0000000 --- a/samples/gobuster-example/list_small.txt +++ /dev/null @@ -1,20 +0,0 @@ -.bash_history -.bashrc -.cache -.config -.cvs -.cvsignore -.forward -.git/HEAD -.history -.hta -.htaccess -.htpasswd -.listing -.listings -.mysql_history -.passwd -.perf -.profile -.rhosts -.sh_history diff --git a/samples/gobuster-example/run.sh b/samples/gobuster-example/run.sh deleted file mode 100755 index a77d1d2..0000000 --- a/samples/gobuster-example/run.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo "Inside Shell" -/userfunc/deployarchive/gobuster dir -u https://www.apple.com -w /userfunc/deployarchive/list_small.txt \ No newline at end of file diff --git a/samples/long-running-compute/jmeter.log b/samples/long-running-compute/jmeter.log new file mode 100644 index 0000000..eb64cfc --- /dev/null +++ b/samples/long-running-compute/jmeter.log @@ -0,0 +1,63 @@ +2020-10-16 21:40:47,200 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN +2020-10-16 21:40:47,247 INFO o.a.j.JMeter: Loading user properties from: /usr/local/Cellar/jmeter/5.3/libexec/bin/user.properties +2020-10-16 21:40:47,248 INFO o.a.j.JMeter: Loading system properties from: /usr/local/Cellar/jmeter/5.3/libexec/bin/system.properties +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: Copyright (c) 1998-2020 The Apache Software Foundation +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: Version 5.3 +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: java.version=11.0.8 +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: os.name=Mac OS X +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: os.arch=x86_64 +2020-10-16 21:40:47,249 INFO o.a.j.JMeter: os.version=10.15.3 +2020-10-16 21:40:47,250 INFO o.a.j.JMeter: file.encoding=UTF-8 +2020-10-16 21:40:47,250 INFO o.a.j.JMeter: java.awt.headless=null +2020-10-16 21:40:47,250 INFO o.a.j.JMeter: Max memory =1073741824 +2020-10-16 21:40:47,250 INFO o.a.j.JMeter: Available Processors =8 +2020-10-16 21:40:47,262 INFO o.a.j.JMeter: Default Locale=English (EN) +2020-10-16 21:40:47,262 INFO o.a.j.JMeter: JMeter Locale=English (EN) +2020-10-16 21:40:47,262 INFO o.a.j.JMeter: JMeterHome=/usr/local/Cellar/jmeter/5.3/libexec +2020-10-16 21:40:47,262 INFO o.a.j.JMeter: user.dir =/Users/vishalb/code/fission_codebase/examples/samples/long-running-compute +2020-10-16 21:40:47,263 INFO o.a.j.JMeter: PWD =/Users/vishalb/code/fission_codebase/examples/samples/long-running-compute +2020-10-16 21:40:47,267 INFO o.a.j.JMeter: IP: 127.0.0.1 Name: Vishals-MacBook-Pro.local FullName: localhost +2020-10-16 21:40:47,982 INFO o.a.j.JMeter: Setting LAF to: com.github.weisj.darklaf.DarkLaf:com.github.weisj.darklaf.theme.DarculaTheme +2020-10-16 21:40:50,151 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties +2020-10-16 21:40:51,393 INFO o.j.r.JARSourceHTTP: Requesting https://jmeter-plugins.org/repo/?installID=mac_os_x-1007122775c217cc51aec5a93e7c81ca-gui +2020-10-16 21:40:54,058 INFO o.j.r.PluginManager: Plugins Status: [jpgc-plugins-manager=1.3, jmeter-core=5.3, jmeter-ftp=5.3, jmeter-http=5.3, jmeter-jdbc=5.3, jmeter-jms=5.3, jmeter-junit=5.3, jmeter-java=5.3, jmeter-ldap=5.3, jmeter-mail=5.3, jmeter-mongodb=5.3, jmeter-native=5.3, jmeter-tcp=5.3, jmeter-components=5.3] +2020-10-16 21:40:54,059 INFO o.j.r.PluginManagerMenuItem: Plugins Manager has upgrades: [jpgc-plugins-manager] +2020-10-16 21:41:08,331 INFO o.a.j.s.FileServer: Default base='/Users/vishalb/code/fission_codebase/examples/samples/long-running-compute' +2020-10-16 21:41:08,334 INFO o.a.j.g.a.Load: Loading file: /Users/vishalb/Downloads/Fission.jmx +2020-10-16 21:41:08,335 INFO o.a.j.s.FileServer: Set new base='/Users/vishalb/Downloads' +2020-10-16 21:41:08,488 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 +2020-10-16 21:41:08,499 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0 +2020-10-16 21:41:08,501 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8 +2020-10-16 21:41:08,502 INFO o.a.j.s.SaveService: Loading file: /Users/vishalb/Downloads/Fission.jmx +2020-10-16 21:41:08,905 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2020-10-16 21:41:08,906 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2020-10-16 21:41:08,906 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2020-10-16 21:41:08,906 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2020-10-16 21:41:08,906 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser +2020-10-16 21:41:08,906 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser +2020-10-16 21:41:09,065 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times +2020-10-16 21:41:09,066 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 +2020-10-16 21:41:09,066 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true +2020-10-16 21:41:09,066 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000 +2020-10-16 21:41:09,224 INFO o.a.j.v.ViewResultsFullVisualizer: Add JavaFX to your Java installation if you want to use renderer: org.apache.jmeter.visualizers.RenderInBrowser +2020-10-16 21:41:09,295 INFO o.a.j.s.FileServer: Set new base='/Users/vishalb/Downloads' +2020-10-16 21:42:01,551 INFO o.a.j.e.StandardJMeterEngine: Running the test! +2020-10-16 21:42:01,552 INFO o.a.j.s.SampleEvent: List of sample_variables: [] +2020-10-16 21:42:01,552 INFO o.a.j.s.SampleEvent: List of sample_variables: [] +2020-10-16 21:42:01,557 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.' +2020-10-16 21:42:01,557 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.' +2020-10-16 21:42:01,861 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*) +2020-10-16 21:42:01,914 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Function#1 +2020-10-16 21:42:01,914 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Function#1. +2020-10-16 21:42:01,914 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error +2020-10-16 21:42:01,915 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false +2020-10-16 21:42:01,919 INFO o.a.j.t.ThreadGroup: Started thread group number 1 +2020-10-16 21:42:01,919 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started +2020-10-16 21:42:01,920 INFO o.a.j.t.JMeterThread: Thread started: Function#1 1-1 +2020-10-16 21:42:01,931 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = Vishals-MacBook-Pro.local +2020-10-16 21:42:01,938 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0 +2020-10-16 21:42:18,357 INFO o.a.j.t.JMeterThread: Thread is done: Function#1 1-1 +2020-10-16 21:42:18,357 INFO o.a.j.t.JMeterThread: Thread finished: Function#1 1-1 +2020-10-16 21:42:18,358 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test +2020-10-16 21:42:18,359 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*) diff --git a/samples/long-running-compute/specs/env-python-1.yaml b/samples/long-running-compute/specs/env-python-1.yaml index 72dbdae..8ac792f 100644 --- a/samples/long-running-compute/specs/env-python-1.yaml +++ b/samples/long-running-compute/specs/env-python-1.yaml @@ -8,7 +8,7 @@ spec: builder: {} imagepullsecret: "" keeparchive: false - poolsize: 250 + poolsize: 25 resources: limits: cpu: 75m @@ -17,6 +17,6 @@ spec: cpu: 50m memory: 64Mi runtime: - image: fission/python-env + image: fission/python-env:1.11.0 terminationGracePeriod: 1 version: 3 \ No newline at end of file diff --git a/samples/long-running-compute/specs/env-python-2.yaml b/samples/long-running-compute/specs/env-python-2.yaml index f300496..81b6033 100644 --- a/samples/long-running-compute/specs/env-python-2.yaml +++ b/samples/long-running-compute/specs/env-python-2.yaml @@ -8,7 +8,7 @@ spec: builder: {} imagepullsecret: "" keeparchive: false - poolsize: 150 + poolsize: 15 resources: limits: cpu: 100m @@ -17,6 +17,6 @@ spec: cpu: 75m memory: 96Mi runtime: - image: fission/python-env + image: fission/python-env:1.11.0 terminationGracePeriod: 1 version: 3 \ No newline at end of file diff --git a/samples/long-running-compute/specs/env-python-3.yaml b/samples/long-running-compute/specs/env-python-3.yaml index 5fb5816..dea223e 100644 --- a/samples/long-running-compute/specs/env-python-3.yaml +++ b/samples/long-running-compute/specs/env-python-3.yaml @@ -8,7 +8,7 @@ spec: builder: {} imagepullsecret: "" keeparchive: false - poolsize: 150 + poolsize: 15 resources: limits: cpu: 75m @@ -17,6 +17,6 @@ spec: cpu: 50m memory: 64Mi runtime: - image: fission/python-env + image: fission/python-env:1.11.0 terminationGracePeriod: 1 version: 3 \ No newline at end of file diff --git a/samples/long-running-compute/specs/env-python-4.yaml b/samples/long-running-compute/specs/env-python-4.yaml index 6e95b57..60e6918 100644 --- a/samples/long-running-compute/specs/env-python-4.yaml +++ b/samples/long-running-compute/specs/env-python-4.yaml @@ -8,7 +8,7 @@ spec: builder: {} imagepullsecret: "" keeparchive: false - poolsize: 100 + poolsize: 10 resources: limits: cpu: 75m @@ -17,6 +17,6 @@ spec: cpu: 50m memory: 64Mi runtime: - image: fission/python-env + image: fission/python-env:1.11.0 terminationGracePeriod: 1 version: 3 \ No newline at end of file diff --git a/samples/long-running-compute/specs/env-python-5.yaml b/samples/long-running-compute/specs/env-python-5.yaml index aa3a01b..f550c62 100644 --- a/samples/long-running-compute/specs/env-python-5.yaml +++ b/samples/long-running-compute/specs/env-python-5.yaml @@ -8,7 +8,7 @@ spec: builder: {} imagepullsecret: "" keeparchive: false - poolsize: 100 + poolsize: 10 resources: limits: cpu: 75m @@ -17,6 +17,6 @@ spec: cpu: 50m memory: 64Mi runtime: - image: fission/python-env + image: fission/python-env:1.11.0 terminationGracePeriod: 1 version: 3 \ No newline at end of file diff --git a/samples/long-running-compute/specs/function-hello-1-15.yaml b/samples/long-running-compute/specs/function-hello-1-15.yaml index 1854ad6..ebef3aa 100644 --- a/samples/long-running-compute/specs/function-hello-1-15.yaml +++ b/samples/long-running-compute/specs/function-hello-1-15.yaml @@ -40,7 +40,7 @@ spec: SpecializationTimeout: 3600 TargetCPUPercent: 0 StrategyType: execution - concurrency: 2000 + concurrency: 200 configmaps: null environment: name: python-1 diff --git a/samples/long-running-compute/specs/function-hello-2-45.yaml b/samples/long-running-compute/specs/function-hello-2-45.yaml index af0bafb..6ac7e86 100644 --- a/samples/long-running-compute/specs/function-hello-2-45.yaml +++ b/samples/long-running-compute/specs/function-hello-2-45.yaml @@ -40,7 +40,7 @@ spec: SpecializationTimeout: 3600 TargetCPUPercent: 0 StrategyType: execution - concurrency: 1200 + concurrency: 120 configmaps: null environment: name: python-2 diff --git a/samples/long-running-compute/specs/function-hello-3-75.yaml b/samples/long-running-compute/specs/function-hello-3-75.yaml index a9bd4a3..34df712 100644 --- a/samples/long-running-compute/specs/function-hello-3-75.yaml +++ b/samples/long-running-compute/specs/function-hello-3-75.yaml @@ -40,7 +40,7 @@ spec: SpecializationTimeout: 3600 TargetCPUPercent: 0 StrategyType: execution - concurrency: 1200 + concurrency: 120 configmaps: null environment: name: python-3 diff --git a/samples/long-running-compute/specs/function-hello-4-90.yaml b/samples/long-running-compute/specs/function-hello-4-90.yaml index b8dc995..3380cfc 100644 --- a/samples/long-running-compute/specs/function-hello-4-90.yaml +++ b/samples/long-running-compute/specs/function-hello-4-90.yaml @@ -40,7 +40,7 @@ spec: SpecializationTimeout: 3600 TargetCPUPercent: 0 StrategyType: execution - concurrency: 800 + concurrency: 80 configmaps: null environment: name: python-4 diff --git a/samples/long-running-compute/specs/function-hello-5-120.yaml b/samples/long-running-compute/specs/function-hello-5-120.yaml index 96bbe86..c98c4cf 100644 --- a/samples/long-running-compute/specs/function-hello-5-120.yaml +++ b/samples/long-running-compute/specs/function-hello-5-120.yaml @@ -40,7 +40,7 @@ spec: SpecializationTimeout: 3600 TargetCPUPercent: 0 StrategyType: execution - concurrency: 800 + concurrency: 80 configmaps: null environment: name: python-5 diff --git a/scripts/cluster-setup/README.md b/scripts/cluster-setup/README.md new file mode 100644 index 0000000..02781d5 --- /dev/null +++ b/scripts/cluster-setup/README.md @@ -0,0 +1,9 @@ +echo "GET http://LB_ADDRESS/fission-function/hello-1-15" | vegeta attack -duration=300s -timeout=3600s -rate=2500/1m -max-workers=13000> hello-1-15.txt & + +echo "GET http://LB_ADDRESS/fission-function/hello-2-45" | vegeta attack -duration=300s -timeout=3600s -rate=1500/1m -max-workers=8000> hello-2-45.txt & + +echo "GET http://LB_ADDRESS/fission-function/hello-3-75" | vegeta attack -duration=300s -timeout=3600s -rate=1500/1m -max-workers=8000> hello-3-75.txt & + +echo "GET http://LB_ADDRESS/fission-function/hello-4-90" | vegeta attack -duration=300s -timeout=4800s -rate=1000/1m -max-workers=6000> hello-4-90.txt & + +echo "GET http://LB_ADDRESS/fission-function/hello-5-120" | vegeta attack -duration=300s -timeout=4800s -rate=1000/1m -max-workers=6000> hello-5-120.txt & diff --git a/scripts/cluster-setup/cluster-as.yaml b/scripts/cluster-setup/cluster-as.yaml new file mode 100644 index 0000000..e217b9e --- /dev/null +++ b/scripts/cluster-setup/cluster-as.yaml @@ -0,0 +1,169 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["events", "endpoints"] + verbs: ["create", "patch"] + - apiGroups: [""] + resources: ["pods/eviction"] + verbs: ["create"] + - apiGroups: [""] + resources: ["pods/status"] + verbs: ["update"] + - apiGroups: [""] + resources: ["endpoints"] + resourceNames: ["cluster-autoscaler"] + verbs: ["get", "update"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["watch", "list", "get", "update"] + - apiGroups: [""] + resources: + - "pods" + - "services" + - "replicationcontrollers" + - "persistentvolumeclaims" + - "persistentvolumes" + verbs: ["watch", "list", "get"] + - apiGroups: ["extensions"] + resources: ["replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["policy"] + resources: ["poddisruptionbudgets"] + verbs: ["watch", "list"] + - apiGroups: ["apps"] + resources: ["statefulsets", "replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses", "csinodes"] + verbs: ["watch", "list", "get"] + - apiGroups: ["batch", "extensions"] + resources: ["jobs"] + verbs: ["get", "list", "watch", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["create"] + - apiGroups: ["coordination.k8s.io"] + resourceNames: ["cluster-autoscaler"] + resources: ["leases"] + verbs: ["get", "update"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["create","list","watch"] + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: ["cluster-autoscaler-status", "cluster-autoscaler-priority-expander"] + verbs: ["delete", "get", "update", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + app: cluster-autoscaler + annotations: + cluster-autoscaler.kubernetes.io/safe-to-evict: "false" +spec: + replicas: 1 + selector: + matchLabels: + app: cluster-autoscaler + template: + metadata: + labels: + app: cluster-autoscaler + annotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '8085' + spec: + serviceAccountName: cluster-autoscaler + containers: + - image: k8s.gcr.io/autoscaling/cluster-autoscaler:v1.17.3 + name: cluster-autoscaler + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 300Mi + command: + - ./cluster-autoscaler + - --v=6 + - --stderrthreshold=info + - --cloud-provider=aws + - --skip-nodes-with-local-storage=false + - --expander=least-waste + - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/fission-scale + - --balance-similar-node-groups + - --skip-nodes-with-system-pods=false + volumeMounts: + - name: ssl-certs + mountPath: /etc/ssl/certs/ca-certificates.crt + readOnly: true + imagePullPolicy: "Always" + volumes: + - name: ssl-certs + hostPath: + path: "/etc/ssl/certs/ca-bundle.crt" \ No newline at end of file diff --git a/scripts/cluster-setup/cluster.yaml b/scripts/cluster-setup/cluster.yaml new file mode 100644 index 0000000..f1612d5 --- /dev/null +++ b/scripts/cluster-setup/cluster.yaml @@ -0,0 +1,35 @@ +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: fission-scale-test + region: ap-south-1 + version: "1.17" + +nodeGroups: + - name: fission-infra + labels: + role: fissioninfra + instanceType: m5.large + desiredCapacity: 2 + minSize: 2 + maxSize: 3 + instancePrefix: fission + volumeSize: 80 + ssh: + allow: true + - name: fission-functions + labels: + role: functions + desiredCapacity: 2 + instanceType: c4.4xlarge + minSize: 2 + maxSize: 25 + instancePrefix: functions + volumeSize: 100 + tags: + k8s.io/cluster-autoscaler/node-template/label/role: functions + k8s.io/cluster-autoscaler/fission-scale-test: owned + k8s.io/cluster-autoscaler/enabled: "true" + ssh: + allow: true \ No newline at end of file diff --git a/scripts/cluster-setup/prometheus-fission.json b/scripts/cluster-setup/prometheus-fission.json new file mode 100644 index 0000000..294448c --- /dev/null +++ b/scripts/cluster-setup/prometheus-fission.json @@ -0,0 +1,635 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.1.5" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Fission serverless dashboards.", + "editable": true, + "gnetId": 10385, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(fission_function_calls_total) by (name)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{name}} ({{method}} {{path}})", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Functions Calls Total", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:110", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:111", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 6 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "fission_func_is_alive", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{funcname}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Functions Alive", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:66", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:67", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 6 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "fission_cold_starts_total", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{funcname}} - {{funcuid}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Functions Cold Start Total", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "alert": { + "conditions": [ + { + "evaluator": { + "params": [ + 0.1 + ], + "type": "gt" + }, + "operator": { + "type": "and" + }, + "query": { + "params": [ + "D", + "2m", + "now" + ] + }, + "reducer": { + "params": [], + "type": "avg" + }, + "type": "query" + } + ], + "executionErrorState": "alerting", + "for": "5m", + "frequency": "1m", + "handler": 1, + "message": "High 500 rate!", + "name": "Functions 500 Response Rate alert", + "noDataState": "no_data", + "notifications": [] + }, + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "(sum(delta(fission_function_calls_total{code=\"500\"}[2m])) by (name))", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{name}}", + "refId": "D" + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "value": 0.1 + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Functions 500 Response", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:341", + "format": "percentunit", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:342", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pluginVersion": "7.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "fission_function_duration_seconds{quantile=\"0.9\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Functions Duration @ Quantile 0.9", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:141", + "decimals": null, + "format": "s", + "label": "Duration", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:142", + "format": "dthms", + "label": "Time", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "schemaVersion": 26, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Fission Functions", + "uid": "RaQNSr7Zk", + "version": 10 + } \ No newline at end of file diff --git a/scripts/cluster-setup/servicemonitors.yaml b/scripts/cluster-setup/servicemonitors.yaml new file mode 100644 index 0000000..d9c09b0 --- /dev/null +++ b/scripts/cluster-setup/servicemonitors.yaml @@ -0,0 +1,21 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: executor-service-app +spec: + selector: + matchLabels: + svc: executor + endpoints: + - targetPort: 8080 +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: router-service-app +spec: + selector: + matchLabels: + svc: router + endpoints: + - targetPort: 8080 diff --git a/scripts/cluster-setup/setupcluster.sh b/scripts/cluster-setup/setupcluster.sh new file mode 100755 index 0000000..595394a --- /dev/null +++ b/scripts/cluster-setup/setupcluster.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -euo pipefail + +echo "Starting Eksctl cluster setup" +# eksctl create cluster -f cluster.yaml # Till --asg-access is supported in YAML file, we need to use CLI +eksctl create cluster --name fission-scale --version 1.17 --managed --asg-access --region ap-south-1 --node-type=c5.4xlarge --nodes-min 1 --nodes-max 20 --ssh-access + +echo "Getting nodes" +kubectl get nodes + +echo "Installing Autoscaler, Metric Server" +kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml +kubectl apply -f cluster-as.yaml + +echo "Installing Prometheus" +helm install fission-metrics --namespace monitoring prometheus-community/kube-prometheus-stack \ + --set kubelet.serviceMonitor.https=true \ + --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false \ + --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false \ + --set prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues=false + +helm install --namespace fission --name-template fission --set prometheus.enabled=false,nats.enabled=false,executor.podReadyTimeout=3600s,router.unTapServiceTimeout=4800s https://github.com/fission/fission/releases/download/1.11.2/fission-all-1.11.2.tgz + +# kubectl annotate svc/router -nfission service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "4800" + +# kubectl apply -f servicemonitors.yaml --namespace fission +# kubectl --namespace monitoring port-forward svc/fission-metrics-grafana 3000:80 diff --git a/scripts/cluster-setup/sys_changes_ds.yaml b/scripts/cluster-setup/sys_changes_ds.yaml new file mode 100644 index 0000000..f730380 --- /dev/null +++ b/scripts/cluster-setup/sys_changes_ds.yaml @@ -0,0 +1,63 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + name: syschanges + name: system-changes-sysds-node-exporter +spec: + selector: + matchLabels: + component: "node-exporter" + app: sysds + updateStrategy: + type: RollingUpdate + template: + metadata: + labels: + component: "node-exporter" + app: sysds + heritage: Helm + spec: + containers: + - name: busybox + image: "busybox" + command: + - /bin/sh + - -c + - | + sysctl -w net.ipv4.tcp_max_tw_buckets=65535 + #sysctl -w net.ipv4.tcp_tw_recycle=1 + sysctl -w net.ipv4.tcp_tw_reuse=0 + sysctl -w net.ipv4.tcp_max_syn_backlog=131072 + sysctl -w net.ipv4.tcp_syn_retries=3 + sysctl -w net.ipv4.tcp_synack_retries=3 + sysctl -w net.ipv4.tcp_retries1=3 + sysctl -w net.ipv4.tcp_retries2=8 + sysctl -w net.ipv4.tcp_rmem="16384 174760 349520" + sysctl -w net.ipv4.tcp_wmem="16384 131072 262144" + sysctl -w net.ipv4.tcp_mem="262144 524288 1048576" + sysctl -w net.ipv4.tcp_max_orphans=65536 + sysctl -w net.ipv4.tcp_fin_timeout=10 + sysctl -w net.ipv4.tcp_low_latency=1 + sysctl -w net.ipv4.tcp_syncookies=0 + imagePullPolicy: "IfNotPresent" + securityContext: + privileged: true + resources: + {} + volumeMounts: + - name: proc + mountPath: /host/proc + readOnly: true + - name: sys + mountPath: /host/sys + readOnly: true + hostNetwork: true + hostPID: true + volumes: + - name: proc + hostPath: + path: /proc + - name: sys + hostPath: + path: /sys \ No newline at end of file diff --git a/scripts/cluster-setup/test/README.md b/scripts/cluster-setup/test/README.md new file mode 100644 index 0000000..b76138f --- /dev/null +++ b/scripts/cluster-setup/test/README.md @@ -0,0 +1,41 @@ +# Running Tests + +1) OS Preps & Tuning + +``` +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 +echo "deb https://dl.bintray.com/loadimpact/deb stable main" | sudo tee -a /etc/apt/sources.list +sudo apt-get update +sudo apt-get install k6 +``` + +``` +sysctl -w net.ipv4.ip_local_port_range="1024 65535" +sysctl -w net.ipv4.tcp_tw_reuse=1 +sysctl -w net.ipv4.tcp_timestamps=1 +sysctl -w net.core.rmem_max = 16777216 +sysctl -w net.core.wmem_max = 16777216 +sysctl -w net.ipv4.tcp_rmem = 4096 87380 16777216 +sysctl -w net.ipv4.tcp_wmem = 4096 65536 16777216 +sysctl -w net.ipv4.tcp_syncookies = 1 +sysctl -w net.ipv4.tcp_mem = "50576 64768 98152" +sysctl -w net.core.netdev_max_backlog = 2500 +sysctl -w net.ipv4.netfilter.ip_conntrack_max = 1048576 + +sysctl -p + +ulimit -n 250000 + +echo "1024 65535" > /proc/sys/net/ipv4/iplocalport_range + +``` + +``` +apt-get install -y htop iftop +``` + +) Running test + +k6 run -e MY_HOSTNAME=LB_ADDRESS --summary-export export.json test-script.js + +) Analyzing Results \ No newline at end of file diff --git a/scripts/cluster-setup/test/export.json b/scripts/cluster-setup/test/export.json new file mode 100644 index 0000000..302aead --- /dev/null +++ b/scripts/cluster-setup/test/export.json @@ -0,0 +1,114 @@ +{ + "metrics": { + "checks": { + "fails": 4927, + "passes": 78, + "value": 0 + }, + "data_received": { + "count": 10998, + "rate": 30.51122133947164 + }, + "data_sent": { + "count": 917921, + "rate": 2546.5439901026684 + }, + "http_req_blocked": { + "avg": 1300.5288843156866, + "max": 21112.443, + "med": 13.904, + "min": 0, + "p(90)": 2216.3966000000005, + "p(95)": 12167.5162 + }, + "http_req_connecting": { + "avg": 1299.4451564435537, + "max": 21100.119, + "med": 13.186, + "min": 0, + "p(90)": 2215.6422000000002, + "p(95)": 12166.099199999999 + }, + "http_req_duration": { + "avg": 59076.74311828164, + "max": 60223.502, + "med": 59560.425, + "min": 0, + "p(90)": 59959.4418, + "p(95)": 59971.7874 + }, + "http_req_receiving": { + "avg": 0.004345454545454547, + "max": 1.111, + "med": 0, + "min": 0, + "p(90)": 0, + "p(95)": 0 + }, + "http_req_sending": { + "avg": 0.8668423576423586, + "max": 46.064, + "med": 0.183, + "min": 0, + "p(90)": 1.7814000000000014, + "p(95)": 3.069800000000001 + }, + "http_req_tls_handshaking": { + "avg": 0, + "max": 0, + "med": 0, + "min": 0, + "p(90)": 0, + "p(95)": 0 + }, + "http_req_waiting": { + "avg": 59075.87193046936, + "max": 60223.415, + "med": 59559.2, + "min": 0, + "p(90)": 59958.7206, + "p(95)": 59971.1964 + }, + "http_reqs": { + "count": 5005, + "rate": 13.885130278601158 + }, + "iteration_duration": { + "avg": 60508.28998786842, + "max": 81174.807309, + "med": 59759.579119, + "min": 22727.599003, + "p(90)": 61585.9261736, + "p(95)": 71465.489313 + }, + "iterations": { + "count": 5005, + "rate": 13.885130278601158 + }, + "vus": { + "max": 3750, + "min": 2750, + "value": 2750 + }, + "vus_max": { + "max": 3750, + "min": 3750, + "value": 3750 + } + }, + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "status is 200": { + "name": "status is 200", + "path": "::status is 200", + "id": "6210a8cd14cd70477eba5c5e4cb3fb5f", + "passes": 78, + "fails": 4927 + } + } + } +} diff --git a/scripts/cluster-setup/test/targets.conf b/scripts/cluster-setup/test/targets.conf new file mode 100644 index 0000000..42c59a8 --- /dev/null +++ b/scripts/cluster-setup/test/targets.conf @@ -0,0 +1,6 @@ +# vegeta attack -duration=300s -timeout=3600s -rate=1000/1m -max-workers=5000 -targets=targets.conf > vtest.txt +GET http://LB_ADDRESS/fission-function/hello-1-15 +GET http://LB_ADDRESS/fission-function/hello-2-45 +GET http://LB_ADDRESS/fission-function/hello-3-75 +GET http://LB_ADDRESS/fission-function/hello-4-90 +GET http://LB_ADDRESS/fission-function/hello-5-120 \ No newline at end of file diff --git a/scripts/cluster-setup/test/test-script.js b/scripts/cluster-setup/test/test-script.js new file mode 100644 index 0000000..7a7dd79 --- /dev/null +++ b/scripts/cluster-setup/test/test-script.js @@ -0,0 +1,98 @@ +import http from "k6/http"; +import { check } from "k6"; + +export let options = { + noConnectionReuse: true, + noVUConnectionReuse: true, + summaryTrendStats: [`avg`, `min`, `med`, `max`, `p(5)`, `p(10)`, `p(15)`, `p(20)`, `p(25)`, `p(30)`], + linger: true, + teardownTimeout: '90m', + scenarios: { + func1: { + executor: 'constant-arrival-rate', + exec: 'func1_exec', + rate: 500, + preAllocatedVUs: 1250, + timeUnit: '1m', + duration: '5m', + gracefulStop: '90m', + }, + func2: { + executor: 'constant-arrival-rate', + exec: 'func2_exec', + rate: 150, + preAllocatedVUs: 750, + timeUnit: '1m', + duration: '5m', + gracefulStop: '90m', + }, + func3: { + executor: 'constant-arrival-rate', + exec: 'func3_exec', + rate: 150, + preAllocatedVUs: 750, + timeUnit: '1m', + duration: '5m', + gracefulStop: '90m', + }, + func4: { + executor: 'constant-arrival-rate', + exec: 'func4_exec', + rate: 100, + preAllocatedVUs: 500, + timeUnit: '1m', + duration: '5m', + gracefulStop: '90m', + }, + func5: { + executor: 'constant-arrival-rate', + exec: 'func5_exec', + rate: 100, + preAllocatedVUs: 500, + timeUnit: '1m', + duration: '5m', + gracefulStop: '90m', + } + }, +}; + + +export function func1_exec() { + let params = { timeout: 3600000 } + let res = http.get(`http://${__ENV.MY_HOSTNAME}/fission-function/hello-1-15`, params) + check(res, { + "status is 200": (r) => r.status === 200 + }); +} + +export function func2_exec() { + let params = { timeout: 3600000 } + let res = http.get(`http://${__ENV.MY_HOSTNAME}/fission-function/hello-2-45`, params) + check(res, { + "status is 200": (r) => r.status === 200 + }); +} + +export function func3_exec() { + let params = { timeout: 3600000 } + let res = http.get(`http://${__ENV.MY_HOSTNAME}/fission-function/hello-3-75`, params) + check(res, { + "status is 200": (r) => r.status === 200 + }); +} + +export function func4_exec() { + let params = { timeout: 3600000 } + let res = http.get(`http://${__ENV.MY_HOSTNAME}/fission-function/hello-4-90`, params) + check(res, { + "status is 200": (r) => r.status === 200 + }); +} + +export function func5_exec() { + let params = { timeout: 3600000 } + let res = http.get(`http://${__ENV.MY_HOSTNAME}/fission-function/hello-5-120`, params) + check(res, { + "status is 200": (r) => r.status === 200 + }); +} \ No newline at end of file diff --git a/scripts/cluster-setup/test/vtest.txt b/scripts/cluster-setup/test/vtest.txt new file mode 100644 index 0000000..d634f7c Binary files /dev/null and b/scripts/cluster-setup/test/vtest.txt differ diff --git a/scripts/cluster-setup/test/vtest_10pm.txt b/scripts/cluster-setup/test/vtest_10pm.txt new file mode 100644 index 0000000..434bb2c Binary files /dev/null and b/scripts/cluster-setup/test/vtest_10pm.txt differ diff --git a/scripts/cluster-setup/test/vtest_7pm.txt b/scripts/cluster-setup/test/vtest_7pm.txt new file mode 100644 index 0000000..faa2221 Binary files /dev/null and b/scripts/cluster-setup/test/vtest_7pm.txt differ diff --git a/scripts/cluster-setup/test/vtest_8pm.txt b/scripts/cluster-setup/test/vtest_8pm.txt new file mode 100644 index 0000000..b2116df Binary files /dev/null and b/scripts/cluster-setup/test/vtest_8pm.txt differ diff --git a/vol.yaml b/vol.yaml new file mode 100644 index 0000000..9c17b79 --- /dev/null +++ b/vol.yaml @@ -0,0 +1,26 @@ +apiVersion: fission.io/v1 +kind: Environment +metadata: + name: python-27 + namespace: default +spec: + version: 2 + builder: + command: build + image: fission/python-builder + runtime: + image: fission/python-env + podspec: + containers: + - name: fetcher + volumeMounts: + - name: funcvol + mountPath: /etc/funcdata + readOnly: true + volumes: + - name: funcvol + downwardAPI: + items: + - path: "labels" + fieldRef: + fieldPath: metadata.labels